PyQt5-基本窗口控件-QMainWindow

一、QMainWindow

QMainWIndow是用 户提供一个应用程序框架,他有自己的布局,可以在布局中添加控件。在主窗口下添加控件,例如:工具栏,菜单栏,状态栏等;

QDialog是对话框窗口的基类;对话框主要用于执行短期任务,或者与用户进行互动;QDialog没有菜单栏,工具栏,状态栏等;

1.1创建主窗口:

常用方法如下:注意,QMainWindow不可以通过setLayout设置布局,因为他有自己的布局;

 Demo:

 1 #创建一个主窗口
 2 import sys
 3 from PyQt5.QtWidgets import  QMainWindow,QApplication,QDesktopWidget,QPushButton
 4 
 5 class MainWindow(QMainWindow):
 6     def __init__(self,parent=None):
 7         super(MainWindow,self).__init__(parent)
 8         self.resize(200,300)#设置大小
 9         self.status=self.statusBar() #创建状态栏
10         self.setWindowTitle('窗体标题!')#窗体标题
11         self.status.showMessage("状态栏",5000)#状态栏消息以及有效时间
12         self.center()#设置布局
13     def center(self):
14         deskSize=QDesktopWidget().screenGeometry()#获取桌面窗体参数
15         windowSize=self.geometry()#获取窗体本身参数
16         self.move((deskSize.width()-windowSize.width())/2,(deskSize.height()-windowSize.height())/2)#居中设置
17 if __name__=="__main__":
18     app=QApplication(sys.argv)
19     window=MainWindow()
20     window.show()
21     sys.exit(app.exec_())

1.2 connection方法,讲槽函数关联起来;实现点击“”关闭窗口“”按钮,实现关闭显示的窗口;槽函数onBtnClickCloseWin如下,该方法中获取到QApplication类的对象,调用该对象的quit()方法来关闭窗口,在槽函数中可以获得发送信号的对象,下面程序中发送信号的对象是关闭按钮。

Demo:

 1 #关闭一个主窗口
 2 import sys
 3 from PyQt5.QtWidgets import  QMainWindow,QApplication,QPushButton,QHBoxLayout,QWidget,QDesktopWidget
 4 
 5 
 6 class MainWindow(QMainWindow):
 7     def __init__(self,parent=None):
 8         super(MainWindow, self).__init__(parent)
 9         #窗体设置
10         self.resize(200,300)
11         self.setWindowTitle("关闭窗口")
12         self.center()
13         
14         #按钮设置
15         self.btn = QPushButton("关闭")
16         self.btn.clicked.connect(self.onBtnClickCloseWin)#单击事件
17         
18         #布局
19         layout = QHBoxLayout()
20         layout.addWidget(self.btn)
21         widGet=QWidget()
22         widGet.setLayout(layout)
23         self.setCentralWidget(widGet)
24         
25     #窗体居中
26     def center(self):
27         self.size=QDesktopWidget().screenGeometry()
28         self.resize=self.geometry()
29         self.move((self.size.width()-self.resize.width())/2,(self.size.height()-self.resize.height())/2)
30 
31     def onBtnClickCloseWin(self):
32         #发送消息对象
33         sender=self.sender()
34         appInstance=QApplication.instance()
35         appInstance.quit()
36 
37 if __name__=="__main__":
38     app=QApplication(sys.argv)
39     mainWindow=MainWindow()
40     mainWindow.show()
41     sys.exit(app.exec_())

扫描二维码关注公众号,回复: 4343273 查看本文章

猜你喜欢

转载自www.cnblogs.com/ygzhaof/p/10057080.html