PyQt 主窗口(QMainWindow)主要包括五大部分: 中心窗口部件:可以是单个部件,也可是复合部件,位于主窗口的中心,是用户操作的主要区域。...菜单栏:一般位于主窗口的顶部,可以调用程序中的绝大多数命令的部件。 停靠窗口:可停靠于中心窗口部件的四周,或自由浮动于顶级窗口之上的窗口,可从一个位置拖动到另一个位置。很多程序没有停靠窗口。...实际上可停靠于中心窗口部件的四周,比停靠窗口更靠外。 状态栏:位于主窗口的底部的部件,用来显示一些提示消息。还可以嵌入其他部件显示额外的信息。...后续会详细介绍主窗口(QMainWindow)程序各个部分的写法。推荐在浏览器中打开并横屏查看代码。...import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import QColor, QFont, QIcon, QKeySequence from
看过上一篇我们知道,在PyQt5中了,所有的控件都是继承自。在桌面应用当中,我们常用的软件都会包含一个主窗口。主窗口就是承载所有控件的一个窗体。...在PyQt5当中常用的主窗体有两种QMainWindow和QDialog。当然这两个也是继承自QWidget类。...因为他们都继承自这个类,所以这三个类都是可以用来创建主窗口的,可以直接使用,也可以继承后再使用。...主窗口的使用 在这里我们先看一下最常用的主窗口类QMainWindow,它为用户提供了一个应用程序框架,包含有自己的布局,可以在布局中添加控件。 看一下下面的这张图片就是QMainWindow。...class Example(QMainWindow) 首先创建一个类继承自QMainWindow,然后执行初始化函数initUI() self.widget = QWidget() self.setCentralWidget
我用 QWidget 来做个示例,它在程序窗口关闭时会触发 closeEvent() 事件,我们把它重写后就能实现关闭窗口时触发我们想要的效果。...重点就两个,如下所示: 重点一: 重写组件的 closeEvent() 方法。 重点二: 主窗口继承重写的组件。...# 主窗口 class Ui_Record(object): def setupUi(self, Dialog): ......# 重点一 # NewWidget是随便起的名字,QWidget是要重写的,继承给NewWidget class NewWidget(QWidget): def closeEvent...QtWidgets.QMessageBox.Yes): event.accept() else: event.ignore() # 重点二 # 主方法里一定要有继承的过程
#无特殊注明,所有案例只修改第一个案例的对应部分 创建一个基本窗口: import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import *...,调用exit()方法或直接销毁主控件时,主循环就会结束 sys.exit(app.exec_()) 更改窗口图标: # 初始化组件 def initUI(self): # 位置,...方法 # 如果关闭QWidget,就会产生一个QCloseEvent,并且把它传入到closeEvent函数的event参数中 # 改变控件的默认行为,就是替换掉默认的事件处理 def closeEvent...self.center() self.show() # 自定义居中函数 def center(self): # 获得主窗口所在的框架 qr = self.frameGeometry...qr.moveCenter(cp) # 然后通过move函数把主窗口的左上角移动到其框架的左上角 self.move(qr.topLeft())
答:pyqt5做为Python的一个模块,它有620多个类和6000个函数和方法。这是一个跨平台的工具包,它可以运行在所有主要的操作系统,包括UNIX,Windows,Mac OS。...wid = QWidget() QWidget部件是pyqt5所有用户界面对象的基类。他为QWidget提供默认构造函数。默认构造函数没有父类。...那下面我们来让这个窗口来显示提示消息: 继续导入我们需要的模块: from PyQt5.QtWidgets import QPushButton from PyQt5.QtWidgets import...(不知道为什么,那个Hello world总是在截图的时候消失。。。) 下面我们来写一个消息框,在退出的时候显示出来,调用question方法: ? 执行代码: ?...在我们点击关闭窗口的时候,这个时候触发了closeEvent函数,这个时候就需要我们来重写cloesEvent方法了,我们在函数里调用QMessage Box的question方法,这里的question
1 主窗口的类型PyQt中的窗口部件:QMainWindow,QWidget,QDialog。...窗口分类 说明 QMainWindow包含菜单栏,工具栏,状态栏,标题栏,是最常见的窗口形式QDialog对话窗口的基类,一般用于执行一些短期任务,无上述几个栏QWidget 不确定窗口的用途就使用Widget...,可作为顶层窗口(QMainWindow),可以嵌入到其他窗口2 QMainWindow2.1 常用方法QMainWindow就是一个顶层窗口,它可以包含很多界面元素,如菜单栏、工具栏、状态栏、子窗口等等...;源码可参考源码:图片PyQt5\QtWidgets\QMainWindow.py2.1.1 addToolBar添加工具栏; def addToolBar(self, *__args): # real...restored from __doc__ """ centralWidget(self) -> QWidget """ return QWidget2.1.3 menuBar返回主窗口的菜单栏
1 如何实现主窗口居中显示?...让主窗口居中,其实就是让窗口的左右边缘到左右屏幕距离相等,让窗口的上下边缘到上下屏幕的距离相等;主要是需要进行计算和移动工作;可以使用 QDesktopWidget 类来获取屏幕的大小和位置信息,然后根据这些信息计算出窗口的位置和大小...- coding:utf-8 -*-# 作者:虫无涯# 日期:2023/11/2 # 文件名称:test021_CenterForm.py# 作用:窗口居中import sysfrom PyQt5.QtWidgets...完整代码# -*- coding:utf-8 -*-# 作者:虫无涯# 日期:2023/11/2 # 文件名称:test022_QuitAPP.py# 作用:退出应用程序import sysfrom PyQt5...win = QuitAPP() win.show() sys.exit(app.exec_())2.6 效果演示点击按钮后输入以下信息:D:\Python37\python.exe F:/pyqt_study
问题来源 我把Matlab Command Window嵌入到一个MatlabCmdDlg(继承与QDialog,是主窗口的一个子窗口MatlabCmdDlg* m_pMatCmdDlg = nullptr...(),这样Matlab的进程就不会消失了。...void MatlabCmdDlg::closeEvent(QCloseEvent *event) { this->hide();//只是隐藏,不关闭[关闭之后,Matlab会消失] event->...首先这个函数会产生一个QCloseEvent事件,如果接受了这个事件(默认调用QWidget::closeEvent()接受这个关闭事件),它就调用hide()函数,隐藏界面。...关闭只是隐藏 void MatlabCmdDlg::closeEvent(QCloseEvent *event) { this->hide();//只是隐藏,不关闭[关闭之后,Matlab会消失]
本篇介绍多文档窗口界面的写法。代码中并未实现关闭窗口前文档未保存的提醒对话框,因为之前已有介绍。...import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import Qt from PyQt5.QtGui import QColor,...__init__() def closeEvent(self, event): self.deleteLater() #关闭后删除 class MainWindow...self.windowMenu.aboutToShow.connect(self.updateWindowMenu)#用于动态更新菜 #设置主窗口的标题...Active Window") self.windowMenu.addAction("close All Windows") #点击QAction绑定自定义的槽函数
它包含了超过620个类,600个方法和函数。它是一个多平台的工具套件,它可以运行在所有的主流操作系统中,包含Unix,Windows和Mac OS。PyQt5采用双重许可模式。...PyQt5是一个高级工具套件,为我们封装了很多复杂功能的实现代码,我们可以更加简单的通过函数去实现这些功能。如果我们是在一个低级工具套件中写代码的话,下面例子的代码很有可能需要数百行来实现。 #!...主循环用于接收来自窗口触发的事件,并且转发他们到widget应用上处理。如果我们调用exit()方法或主widget组件被销毁,主循环将退出。sys.exit()方法确保一个不留垃圾的退出。...主循环被启动。 显示一个提示文本 我们可以给我们的任何widget组件提供气泡帮助提示框。 #!...要修改组件动作我们需要重新实现closeEvent()事件处理方法。
它包含了超过620个类,600个方法和函数。它是一个多平台的工具套件,它可以运行在所有的主流操作系统中,包含Unix,Windows和Mac OS。PyQt5采用双重许可模式。...PyQt5是一个高级工具套件,为我们封装了很多复杂功能的实现代码,我们可以更加简单的通过函数去实现这些功能。如果我们是在一个低级工具套件中写代码的话,下面例子的代码很有可能需要数百行来实现。 #!.../usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 教程 在这个例子中, 我们用PyQt5创建了一个简单的窗口。...主循环用于接收来自窗口触发的事件,并且转发他们到widget应用上处理。如果我们调用exit()方法或主widget组件被销毁,主循环将退出。sys.exit()方法确保一个不留垃圾的退出。...要修改组件动作我们需要重新实现closeEvent()事件处理方法。
QMainWindow继承自QWidget QMainWindow相当于程序的主界面,内置了menu和toolBar。 使用 Qt Designer 可以很方便地添加menu选项。...主窗口关闭时,会调用closeEvent(self, *args, **kwargs),可复写这个方法,加上一些关闭时的操作。 比如终止子线程,关闭数据库接口,释放资源等等操作。...sys.argv) window = AppMainWindow() window.show() sys.exit(app.exec_()) app_main_window.py窗口实现文件...class RustMainWindow(QMainWindow): """主界面类""" def __init__(self): super(RustMainWindow...手写窗口代码 和上面那个功能类似。
这里用画一下核心流程:大致分为以下模块:MainWindow:主窗口,负责 UI 交互和信号连接; TimerController:定时器逻辑,封装 QTimer,控制番茄钟和自定义提醒; ConfigManager...")要点提示:在 closeEvent 中使用 event.ignore() 而不是 super().closeEvent(event),才能让窗口真正隐藏而非退出程序。...九、系统托盘 SystemTray除了主界面最小化,还想右键菜单“退出”、“显示”更灵活。.../tray.png"), window) self.window = window menu = QMenu() show_act = QAction("显示主窗口...此外,还可以在主界面设一个“重置配置”按钮,一键清空 config.json,恢复默认设置。
,事件处理器这个时候开始工作. # 主循环从窗口上接收事件,并把事件传入到派发到应用控件里. # 当调用exit()方法或者直接销毁主控件时,主循环就会结束 # sys.exit()方法能确保主循环安全退出...# QCoreApplication是在QApplication里创建的 # 点击事件和能终止进程并退出应用的quit函数绑定在了一起....) self.setWindowTitle('消息盒子') self.show() def closeEvent(self, QCloseEvent):...QCloseEvent.ignore() app = QApplication(sys.argv) demo = Example() app.exec_() ``` ### UI文件生成demo01模块(主窗口...# 创建app app = QApplication(sys.argv) # 实例化主窗口对象 w = QMainWindow() # 实例化并调用初始化方法 Ui_MainWindow().setupUi
self.center()#自定义一个居中的函数 self.setFixedSize(self.width(),self.height());#PyQT禁止调整窗口大小和窗口最大化按钮 #self.setWindowFlags...构造函数的第一个参数是按钮的标签。第二个参数是父窗口小部件。...构造函数的第一个参数是按钮的标签。第二个参数是父窗口小部件。...,在PyQt中就会触发一个QCloseEvent的事件,正常情况下会直接关闭这个窗口, #但是我们不希望这样的事情发生,所以我们需要重新定义QCloseEvent,函数名称为closeEvent不可变...def closeEvent(self,event):#函数名固定不可变 if self.CloseAllowed==1: event.accept()#关闭窗口 else: QtWidgets.QMessageBox.information
主循环被启动。 显示一个提示文本 我们可以给我们的任何widget组件提供气泡帮助提示框。 #!...self.setWindowTitle('Message box') self.show() def closeEvent...要修改组件动作我们需要重新实现closeEvent()事件处理方法。...屏幕上居中的窗口 下面的脚本展示我们如何把窗口居中显示到桌面窗口。 #!...self.center()将窗口居中放置的代码在自定义的center()方法中 我们获得主窗口的一个矩形特定几何图形。这包含了窗口的框架。
在前面的学习中,我们对PyQt的基本使用、Qt Designer与Python编码的工作流程有了基本的学习。同时也掌握了Qt Designer中的布局方式和使用Python代码来实现布局。...2.Anaconda(Python 3.6.0,PyQt5) ? 开发流程 1 在Pycharm中打开Qt designer,如下所示: ?...因为设计的游戏用不到菜单栏,所以此处的窗口选择Widget。创建的Widget窗口没有菜单栏。...让这些控件可以实现相应函数功能,而不是做一个摆设。即让这些窗口中的控件实现信号与槽机制。 如以下代码是实现按了窗口“退出”按钮之后实现的函数功能。...def closeEvent(self, event): reply = QMessageBox.question(self, '确认', '确认退出吗?'
image.png import sys from PyQt5.QtCore import (QEvent, QTimer, Qt) from PyQt5.QtWidgets import (QApplication..., QMenu, QWidget) from PyQt5.QtGui import QPainter class Widget(QWidget): def init(self, parent=None...def giveHelp(self): self.text = "请点击这里触发追踪鼠标功能" self.update() # 重绘事件,也就是触发paintEvent函数。...'''重新实现关闭事件''' def closeEvent(self, event): print("Closed") '''重新实现上下文菜单事件''' def contextMenuEvent...没有提供该事件的处理函数的情况,Tab键由于涉及焦点切换,不会传递给keyPressEvent,因此,需要在这里重新定义。'''
PyQt为事件处理提供了两种机制:高级的信号和槽机制,以及低级的事件处理程序。前者已经介绍过,后者也有涉及,比如我们曾重新实现过窗口部件的closeEvent()。...PyQt为拦截和处理事件提供了5种不同的方式,这里只介绍最常用的头两种方式。 第一种是重新实现特定事件,如键盘和鼠标事件、重绘事件、尺寸大小改变事件等等,的处理程序。可参见代码示例。...import sys from PyQt5.QtWidgets import QMainWindow, QWidget, QApplication from PyQt5.QtCore import Qt...def initUI(self): self.setWindowTitle("鼠标键盘事件示例") self.setCentralWidget(QWidget())#指定主窗口中心部件
其中 MediaPlayer为主窗口,主体界面布局、逻辑功能、播放窗口、播放列表都在其中实现。audio模块主要负责音量条。urlWidget模块主要负责网络url弹窗输入。...self.fileInfo_Signle.emit([self.url.lineEdit_url.text(),self.url.lineEdit.text()]) self.hide() MediaPlayer 该模块主窗口模块...还有一些 listwdiget,videowidget 主要功能实现,其实按照设计模式应该也做单独的 模块,主窗口负责调用。...fileName) 音频设置 #音频设置 def sltAudio(self): pos = self.pushButton_audio.mapTo(self,QPoint(0,0)) #获取相对主窗口坐标.../config.json",'w') as f: json.dump(config,f) #关闭事件,再退出前重写config配置文件 def closeEvent(self,event):