一、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_())