1 主窗口的类型
- PyQt中的窗口部件:
QMainWindow,QWidget,QDialog
。
窗口分类 |
说明 |
QMainWindow |
包含菜单栏,工具栏,状态栏,标题栏,是最常见的窗口形式 |
QDialog |
对话窗口的基类,一般用于执行一些短期任务,无上述几个栏 |
QWidget |
不确定窗口的用途就使用Widget ,可作为顶层窗口(QMainWindow ),可以嵌入到其他窗口 |
2 QMainWindow
2.1 常用方法
QMainWindow
就是一个顶层窗口,它可以包含很多界面元素,如菜单栏、工具栏、状态栏、子窗口等等;
- 源码可参考源码:
python
复制代码
PyQt5\QtWidgets\QMainWindow.py
python
复制代码
def addToolBar(self, *__args): # real signature unknown; restored from __doc__ with multiple overloads
"""
addToolBar(self, Qt.ToolBarArea, QToolBar)
addToolBar(self, QToolBar)
addToolBar(self, str) -> QToolBar
"""
return QToolBar
python
复制代码
def centralWidget(self): # real signature unknown; restored from __doc__
""" centralWidget(self) -> QWidget """
return QWidget
python
复制代码
def menuBar(self): # real signature unknown; restored from __doc__
""" menuBar(self) -> QMenuBar """
return QMenuBar
python
复制代码
def setCentralWidget(self, QWidget): # real signature unknown; restored from __doc__
""" setCentralWidget(self, QWidget) """
pass
2.1.5 setStatusBar
python
复制代码
def setStatusBar(self, QStatusBar): # real signature unknown; restored from __doc__
""" setStatusBar(self, QStatusBar) """
pass
2.1.6 statusBar
- 获得状态栏对象后,调用状态栏对象的
showMessage()
方法显示状态栏信息;
python
复制代码
def statusBar(self): # real signature unknown; restored from __doc__
""" statusBar(self) -> QStatusBar """
return QStatusBar
2.2 窗口示例
2.2.1 空白窗口
python
复制代码
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/10/19
# 文件名称:test017_FirstMainWin.py
# 作用:QMainWindow应用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
if __name__ == "__main__":
app = QApplication(sys.argv)
win = QMainWindow()
win.show()
sys.exit(app.exec_())
2.2.2 通用标准写法
python
复制代码
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/10/19
# 文件名称:test018_FirstMainWin.py
# 作用:QMainWindow应用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
class FirstMainWin(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("标准窗口")
self.resize(500, 400)
self.info = self.statusBar()
self.info.showMessage("这是一个标准窗口的写法", 6000)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = FirstMainWin()
win.show()
sys.exit(app.exec_())
QWidget
类是所有用户界面对象的基类;
- 所有的窗口和控件都直接或间接继承自
QWidget
类。
python
复制代码
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/10/19
# 文件名称:test018_FirstQwidget.py
# 作用:QMainWindow应用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QToolTip
class FirstQwidget():
def __init__(self):
super().__init__()
self.win = QWidget()
def s(self):
self.btn = QPushButton(self.win)
self.btn.setText("按钮")
self.btn.move(30, 30)
self.win.resize(300, 300)
self.win.move(230, 300)
self.win.setWindowTitle("这是一个QWidget")
self.win.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
w = FirstQwidget()
w.s()
sys.exit(app.exec_())
4 QDialog
QDialog
的各种子类提供了各种标准对话框,比如QMessageBox
, QFileDialog
, QInputDialog
, QFontDialog
等。
python
复制代码
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/10/19
# 文件名称:test020_FirstQwidget.py
# 作用:QMainWindow应用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QDialog
from PyQt5.QtCore import Qt
class DialogWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('这是Dialog')
self.resize(400, 400)
self.btn = QPushButton(self)
self.btn.setText('这是一个对话框')
self.btn.move(50, 50)
self.btn.resize(200, 30)
self.btn.clicked.connect(self.showDialog)
self.show()
def showDialog(self):
dialog = QDialog()
btn = QPushButton('ok', dialog)
dialog.setWindowTitle('Dialog弹窗')
btn.move(70, 60)
btn.clicked.connect(QMainWindow.close)
dialog.setWindowModality(Qt.ApplicationModal)
dialog.exec_()
if __name__ == '__main__':
app = QApplication(sys.argv)
w = DialogWindow()
sys.exit(app.exec_())