qt设置顶层窗口_Python快速入门系列:PyQt5 快速开发GUI-窗口类型以及主窗口创建...

本文介绍了PyQt5中QMainWindow、QWidget和QDialog三种窗口类的使用,强调QMainWindow作为主窗口常用于创建带有菜单栏、工具栏的GUI程序。QDialog用于创建对话框,而QWidget适用于不确定窗口类型的场景。通过实例展示了如何创建基本的窗口,并添加了关闭按钮及窗口居中显示的功能。
摘要由CSDN通过智能技术生成

QMainWindow, QWidget, QDialog三个类都是用来创建窗口的,可以直接使用或继承后再使用。QMainWindow窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,也是GUI程序的主窗口。QDialog是对话框窗口的基类。对话框主要用来执行短期任务,或者与用户互动,它可以是模态的,也可以是非模态的。QDialog窗口没有菜单栏、工具栏、状态栏等。


如果是主窗口,就用QMainWindow类。如果是对话框,就用QDialog类。如果不确定,或者有可能是顶层窗口,也有可能嵌入到其它窗口中,那就用QWidget类。

创建主窗口


如果一个窗口包含一个或多个窗口,那么这个窗口就是父窗口,被包含的窗口就是子窗口。没有父窗口的窗口就是顶层窗口。QMainWindow就是一个顶层窗口。
QMainWindow类中比较重要的方法,如下:

addToolBar() : 添加工具栏

centralWidget() : 返回窗口中心的一个控件,未设置时返回NULL

menuBar() : 返回主窗口的菜单栏

setCentralWidget() : 设置窗口中心的控件

setStatusBar() : 设置状态栏

statusBar() : 获取状态栏对象后,调用状态栏对象的showMessage(message, int timeout = 0)方法,显示状态栏信息。其中第一个参数是显示的状态栏信息;第二个参数是信息停留的时间,单位是毫秒,默认是0, 表示一直显示状态栏信息

在开发GUI中,用Qt Designer虽然很方便,但是过于依赖,会导致很难理解QT的一些实现方法,我个人还是喜欢自己码代码。

实例一

创建一个简单的窗口:

import sys from PyQt5.QtWidgets import QMainWindow, QApplicationclass MainWindow(QMainWindow):def __init__(self, parent=None):  super(MainWindow, self).__init__(parent) self.resize(400, 200) self.status = self.statusBar() self.status.showMessage("这是一个状态栏", 5000) self.setWindowTitle("主窗口实例")if __name__ == "__main__": app = QApplication(sys.argv) form = MainWindow() form.show() sys.exit(app.exec_())

效果图:

d48e5b0fa36a57837387a73654e900f2.png

实例二


创建按钮关闭主窗口&&主窗口居中显示:

import sys from PyQt5.QtWidgets import QMainWindow,QApplication,QPushButton,QHBoxLayout,QWidget,QDesktopWidget class MainWindow(QMainWindow): def __init__(self,parent=None):  super(MainWindow, self).__init__(parent) #窗体设置  self.resize(300, 200) self.setWindowTitle("关闭窗口") self.center() #按钮设置  self.btn = QPushButton("关闭") self.btn.clicked.connect(self.onBtnClickCloseWin) #单击事件   #布局  layout = QHBoxLayout()layout.addWidget(self.btn) widGet=QWidget() widGet.setLayout(layout) self.setCentralWidget(widGet) #窗体居中  def center(self):  self.size=QDesktopWidget().screenGeometry() self.resize=self.geometry() self.move((self.size.width()-self.resize.width())/2,(self.size.height()-self.resize.height())/2) def onBtnClickCloseWin(self):  #发送消息对象 sender=self.sender()print( sender.text() + ' 被按下了' ) appInstance=QApplication.instance() appInstance.quit()if __name__=="__main__": app=QApplication(sys.argv) mainWindow=MainWindow() mainWindow.show() sys.exit(app.exec_())

效果图:

7211b607960dbef56ada1f9c041239a2.png

完结,后续持续更新PyQt5的相关内容.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值