码迷,mamicode.com
首页 > 其他好文 > 详细

pyqt5-基本窗口控件

时间:2020-02-13 09:48:59      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:坐标   框架   ini   坐标系   center   size   desktop   send   管理   

1.QMainWindow

QMainWindow 是应用程序框架 有自己的布局 也可以在布局中添加控件 比如工具栏菜单栏 状态栏等添加到布局管理器中

1.1窗口类型介绍

QMainWindow QWidget QDialog 这三个类都是用来创建窗口的 可以直接使用,也可以继承后再使用
QMainWindow 可以包含菜单栏 工具栏 状态栏 标题栏等 是最常见的窗口形式 
QDialog 是对话窗口的基类。对话框主要用来执行短期任务,或者与用户进行互动,它可以是模态的 也可以是非模态的,QDialog 没有菜单栏 工具栏 状态栏等等
使用方面:
    如果是主窗口 就是用QMainWindow 如果是对话窗,就使用QDialog类 如果不确定或者可能作为顶层窗口,也有可能嵌入到其他窗口中,那么就使用QWidget类

1.2创建主窗口

    如果一个窗口包含一个或多个窗口,那么这个窗口就是父窗口,被包含的窗口就是子窗口。没有父窗口的窗口就是顶层窗口,QMainWindow就是一个顶层窗口,它可以包含很多界面元素。
在PyQt中 在主窗口 中会有一个空间占位符来占着中心窗口 可以使用setCentralWidget()来设置中心窗口

技术图片
QMainWindow 继承自QWidget类 拥有它的所有派生方法和属性
其中比较重要的方法如
+ addToolBar() 添加工具栏
+ centralWidget() 返回窗口中心的一个控件 未设置时返回null
+ menuBar() 返回主窗口的菜单栏
+ setCentralWidget() 设置窗口中心控件
+ setStatusBar() 设置状态栏
+ statusBar() 获得状态栏对象后,调用状态栏对象的showMessage(message,int timeout=0)方法,显示状态栏信息你。其中第一个参数要显示的信息 第二个参数时信息停留的时间 单位是毫秒默认是0 表示一直显示状态栏信息。

from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5.QtGui import QIcon
class MainWindow(QMainWindow):
    def __init__(self,parent=None):
        super(MainWindow,self).__init__(parent)
        self.resize(400,200)

        self.status = self.statusBar()
        self.status.showMessage("这个时状态栏的显示时间是5000",5000)
        self.setWindowTitle("PyQt MainWindow例子")
    
if __name__ == "__main__":
    import sys
    app  = QApplication(sys.argv)
    app.setWindowIcon(QIcon("./images/b822566318.ico"))
    mywin = MainWindow()
    mywin.show()
    sys.exit(app.exec_())

技术图片

下面是窗口放在桌面中心的位置

from PyQt5.QtWidgets import QMainWindow,QApplication,QDesktopWidget
import sys
class winform(QMainWindow):
    def __init__(self,parent=None):
        super(winform,self).__init__(parent)
        self.setWindowTitle("主窗口放在屏幕中间例子")
        self.resize(270,270)
        self.center()
    def center(self):
        screen = QDesktopWidget().screenGeometry() #获取屏幕的大小
        size = self.geometry()#获取窗口的大小
        self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)#移动到指定位置

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = winform()
    win.show()
    sys.exit(app.exec_())

下面是关闭装主窗口的例子

from PyQt5.QtWidgets import QMainWindow,QApplication,QWidget,QHBoxLayout,QPushButton
import sys

class WinForm(QMainWindow):
    def __init__(self,parent=None):
        super(WinForm,self).__init__(parent)
        self.setWindowTitle("关闭主窗口的例子")
        self.button = QPushButton("关闭窗口按钮")
        self.button.clicked.connect(self.onButtonClick)
        layout = QHBoxLayout()
        layout.addWidget(self.button)
        main_frame  = QWidget()
        main_frame.setLayout(layout)
        self.setCentralWidget(main_frame)
    def onButtonClick(self):
        sender = self.sender()#发送信号的对象
        print(sender.text()+"被按下了")
        qApp = QApplication.instance()
        qApp.quit()
    
if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = WinForm()
    form.show()
    sys.exit(app.exec_())

2 QWidget

基础窗口控件QWidget类是所有用户界面对象的积累,所有的窗口和空间都直接或间接继承自QWidget类
窗口控件(Widget 简称控件)是在PyQt中建立界面的主要元素。在PyQt中没有嵌入到其他控件中的控件为窗口一般窗口都有边框 标题栏。窗口是指程序的整体界面,可以包含标题栏 菜单栏 工具栏 关闭按钮 最小化按钮 最大化按钮等;控件是指按钮 复选框 文本框 表格 进度条等这些组成的基本元素。一个程序可以有多个窗口,一个窗口也可以有多个控件。

2.1窗口坐标系统

PyQt使用同一的坐标系统来定位窗口控件的位置和大小。如下图所示。

技术图片

技术图片

pyqt5-基本窗口控件

标签:坐标   框架   ini   坐标系   center   size   desktop   send   管理   

原文地址:https://www.cnblogs.com/simp/p/12302044.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!