PyQt5学习之路,点击有pyqt5学习笔记
在PyQt5中,提供了三种窗口类型, QMainWindow
, QWidget
和 QDialog
,三个类都是用来创建窗口的,可以直接使用,也可以继承后再使用
QMainWindow
QWidget
QDialog
-
:包含菜单栏,工具栏,状态栏和标题栏。是最常见的窗口形式,通常被用作为主窗口(不能设置布局,使用setLayout()方法,因为它有自己的布局);QMainWindow
PyQt5基本窗口控件-----QMainWindow -
:是对话框窗口的基类。对话框主要用来执行短期任务,或者与用户进行互动,有模态与非模态。这个窗口没有菜单栏,工具栏等QDialog
PyQt5基本窗口控件-----QMainWindow -
不清楚窗口用途时,使用QWidget类QWidget
QMainWindow继承自QWidget类,拥有它的派生方法和属性
方法 | 描述 |
---|---|
addToolBar() | 添加工具栏 |
centralWidget() | 返回窗口中心的一个控件,未设置时返回NULL |
menuBar() | 返回主窗口的菜单栏 |
setCentralWidget | 设置窗口中心的控件 |
seStatusBar | 设置状态栏 |
statusBar | 获得状态栏对象后,调用状态栏对象的showMessage(message, int timeout = 0)方法,显示状态栏信息,其中第一个参数是要显示的状态栏信息,第二参数是信息停留时间,单位毫秒,默认为0,表示一直显示 |
在PyQt中,主窗口(QMainWindow)中会有一个控件(QWidget)占位符来占着中心窗口,可以使用setCentralWidget()来设置中心窗口。
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QDesktopWidget, QHBoxLayout, QWidget, QPushButton
from PyQt5.QtGui import QIcon
class QMainWin(QMainWindow):
def __init__(self, parent=None):
super(QMainWin, self).__init__(parent)
# 设置主窗口的标题
self.setWindowTitle("主窗口应用")
# 设置窗口的尺寸
self.resize(400, 300)
# 设置状态栏
self.status = self.statusBar()
self.status.showMessage('这是状态栏,消息只存在五秒', 5000)
# 设置按钮
self.button1 = QPushButton('关闭主窗口')
# 将信号与槽关联
self.button1.clicked.connect(self.onButtonClick)
layout = QHBoxLayout()
layout.addWidget(self.button1)
MainFrame = QWidget()
MainFrame.setLayout(layout)
self.setCentralWidget(MainFrame)
# 主窗口居中显示
def center(self):
# 获取屏幕坐标
screen = QDesktopWidget().screenGeometry()
# 获取窗口坐标
size = self.geometry()
newLeft = (screen.width() - size.width())/2
newTop = (screen.height() - size.height())/2
self.move(newLeft, newTop)
# 按钮单击事件的方法(自定义的槽)
def onButtonClick(self):
# sender是发送信号的对象
sander = self.sender()
print(sander.text() + '按钮被按下')
app = QApplication.instance()
# 退出应用程序
app.quit()
if __name__ == '__main__':
app = QApplication(sys.argv)
app.setWindowIcon(QIcon('about_us_bk.jpg'))
main = QMainWin()
main.show()
sys.exit(app.exec_())