PyQt5编程(17):窗口事件

PyQt5编程(17):窗口事件,第1张

1改变窗口状态
下列的方法可用来改变或判断窗口的状态(最小化、最大化、隐藏和显示):

from PyQt5 import QtCore, QtWidgets

class MyWindow(QtWidgetsQWidget):
def init (self, parent=None):
QtWidgetsQWidget init (self, parent)
selfresize(300, 100)
def changeEvent(self, e):
if etype() == QtCoreQEventWindowStateChange:
if selfisMinimized():
print("窗口最小化")
elif selfisMaximized():
print("窗口最大化")
elif selfisFullScreen():
print("全屏显示")
elif selfisActiveWindow():
print("活动窗口")
QtWidgetsQWidgetchangeEvent(self, e)
def showEvent(self, e):
print("窗口显示")
QtWidgetsQWidgetshowEvent(self, e)
def hideEvent(self, e):
print("窗口隐藏")
QtWidgetsQWidgethideEvent(self, e)

if name == " main ":
import sys
app = QtWidgetsQApplication(sysargv)
window = MyWindow()
windowshow()
sysexit(appexec_())

2改变窗口的位置和尺寸
移动窗口、调整窗口尺寸时,下列方法将被调用:

from PyQt5 import QtWidgets

class MyWindow(QtWidgetsQWidget):
def init (self, parent=None):
QtWidgetsQWidget init (self, parent)
selfresize(300, 100)
def moveEvent(self, e):
print("x = {0}; y = {1}"format(epos()x(), epos()y()))
QtWidgetsQWidgetmoveEvent(self, e)
def resizeEvent(self, e):
print("w = {0}; h = {1}"format(esize()width(),esize()height()))
QtWidgetsQWidgetresizeEvent(self, e)

if name == " main ":
import sys
app = QtWidgetsQApplication(sysargv)
window = MyWindow()
windowshow()
sysexit(appexec_())

3重绘窗口
当控件或控件的部分变为可见时,控件需要重绘。此时,paintEvent(self,event)被调用。event参数包含QPaintEvent类的实例,通过该类有以下方法:

4阻止窗口关闭
通过单击窗口标题栏中的关闭按钮或调用close()方法来关闭窗口时,closeEvent(self,event)方法被调用。 通过event参数可获得QCloseEvent类的一个对象。 为了防止窗口关闭,必须通过该对象调用ignore()方法,否则调用accept()方法。
下面的例子为:单击关闭按钮将显示一个标准对话框,要求确认是否关闭该窗口。 如果用户单击“是”按钮,则关闭窗口;如果用户单击“否”按钮,则仅关闭对话框,窗口不会被关闭。

from PyQt5 import QtWidgets

class MyWindow(QtWidgetsQWidget):
def init (self, parent=None):
QtWidgetsQWidget init (self, parent)
selfresize(300, 100)
def closeEvent(self, e):
result = QtWidgetsQMessageBoxquestion(self,
"关闭窗口确认",
"真的要关闭窗口",
QtWidgetsQMessageBoxYes | QtWidgetsQMessageBoxNo,
QtWidgetsQMessageBoxNo)
if result == QtWidgetsQMessageBoxYes:
eaccept()
QtWidgetsQWidgetcloseEvent(self, e)
else:
eignore()

if name == " main ":
import sys
app = QtWidgetsQApplication(sysargv)
window = MyWindow()
windowshow()
sysexit(appexec_())

以上就是关于PyQt5编程(17):窗口事件全部的内容,包括:PyQt5编程(17):窗口事件、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9592011.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存