PyQt5學習--基本窗口控件--QMainWindow
阿新 • • 發佈:2018-04-24
iba nbu des 應用 ica 窗口 標題欄 ins __init__
QMainWindow主窗口為用戶提供一個應用程序框架,它有自己的布局,可以在布局中添加控件。比如將工具欄、菜單欄和狀態欄等添加到布局管理器中。
窗口類型介紹
QMainWindow、QWidget和QDialog三個類都是用來創建窗口的。
QMainWindow窗口可以包含菜單欄、工具欄、狀態欄、標題欄等,是最常見的窗口形式。
QWidget是對話框窗口的基類。對話框主要用來執行短期任務,或者與用戶進行互動,它可以是模態的,也可以是非模態的。
如果是主窗口,就使用QMainWindow類;如果是對話框,就使用QDialog類;如果不確定,或者有可能作為頂層窗口,也有可能嵌入到其他窗口中,就使用QWidget類。
創建主窗口
QMainWindow類中比較重要的方法如下表所示:
方法 | 描述 |
---|---|
addToolBar() | 添加工具欄 |
centralWidget() | 返回窗口中心的一個控件,未設置時返回NULL |
menuBar() | 返回主窗口的菜單欄 |
setCentralWidget() | 設置窗口中心的控件 |
setsStatusBar() | 設置狀態欄 |
statusBar() | 獲得狀態欄對象後,調用狀態欄對象的showMessage(message,int timeout=0)方法,顯示狀態欄信息 |
直接上書上的代碼
代碼示例
創建主窗口
# -*- coding: utf-8 -*-
‘‘‘
【簡介】
PyQT5中主窗口例子
‘‘‘
import sys
from PyQt5.QtWidgets import QMainWindow , QApplication
from PyQt5.QtGui import QIcon
class MainWidget(QMainWindow):
def __init__(self,parent=None):
super(MainWidget,self).__init__(parent)
# 設置主窗體標簽
self.setWindowTitle("QMainWindow 例子")
self.resize(400, 200)
self.status = self.statusBar(www.boshenyl.cn )
self.status.showMessage("這是狀態欄提示",5000)
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setWindowIcon(QIcon("www.yszx11.cn/ /images/cartoon1.ico"))
main = MainWidget(www.mhylpt.com/)
main.show()
sys.exit(app.exec_())
移動和關閉主窗口
#coding=‘utf-8‘
#將窗口移動到屏幕中間和關閉主窗口的例子
import sys
from PyQt5.QtWidgets import QDesktopWidget,QMainWindow,QHBoxLayout,QPushButton,QApplication,QWidget
class WinForm(QMainWindow):
def __init__(self,parent=None):
super(WinForm, self).__init__(parent)
self.setWindowTitle(‘窗口放在中間和關閉主窗口的例子‘)
self.resize(370,250)
self.center(www.wanmeiyuele.cn )
self.button1 = QPushButton(‘關閉主窗口‘)
#將按鈕的clicked信號與onButtonClick槽函數關聯起來
self.button1.clicked.connect(self.onButtonClick)
layout = QHBoxLayout()
layout.addWidget(self.button1)
main_frame = QWidget()
main_frame.setLayout(layout)
self.setCentralWidget(main_frame)
def center(self):
#獲得屏幕的大小
screen = QDesktopWidget().screenGeometry()
#獲得QWidget窗口的大小
size = self.geometry(www.caibaoyule.cn )
#將窗口移動到屏幕中間
self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)
def onButtonClick(self):
# sender是發送信號的對象
sender = self.sender()
print(sender.text(www.jyz521.com/)+‘被按下了‘)
qApp = QApplication.instance()
qApp.quit(www.365soke.cn)
if __name__ == ‘__main__‘:
app = QApplication(sys.argv)
form = WinForm()
form.show()
sys.exit(app.exec_())
PyQt5學習--基本窗口控件--QMainWindow