from PyQt5
.
QtWidgets import
*
from PyQt5
.
QtGui import
*
from PyQt5
.
QtWebEngineWidgets import
*
from PyQt5
.
QtPrintSupport import
*
import os
import sys
import sys
from PyQt5
.
QtWidgets import QMainWindow
,
QApplication
,
QMessageBox
from PyQt5
.
QtGui import QIcon
class
MainWidget
(
QMainWindow
)
:
def
__init__
(
self
,
parent
=
None
)
:
super
(
MainWidget
,
self
)
.
__init__
(
parent
)
# 设置主窗体标签
self
.
setWindowTitle
(
"QMainWindow 例子"
)
self
.
resize
(
400
,
200
)
def
closeEvent
(
self
,
event
)
:
重写closeEvent方法,实现dialog窗体关闭时执行一些代码
:
param event
:
close
(
)
触发的事件
:
return
:
None
reply
=
QMessageBox
.
question
(
self
,
'本程序'
,
"是否要退出程序?"
,
QMessageBox
.
Yes
|
QMessageBox
.
No
,
QMessageBox
.
No
)
if
reply
==
QMessageBox
.
Yes
:
event
.
accept
(
)
else
:
event
.
ignore
(
)
if
__name__
==
"__main__"
:
app
=
QApplication
(
sys
.
argv
)
app
.
setWindowIcon
(
QIcon
(
"./images/cartoon1.ico"
)
)
main
=
MainWidget
(
)
main
.
show
(
)
sys
.
exit
(
app
.
exec_
(
)
)
运行效果:
pyqt5 MainWidget 重写 关闭窗口 事件代码如下:from PyQt5.QtCore import *from PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtWebEngineWidgets import *from PyQt5.QtPrintSupport import *import o...
PyQt5
技术篇-Q
Widget
、QDialog程序
窗口
关闭
closeEvent()触发
事件
方法
重写
。
我用 Q
Widget
来做个示例,它在程序
窗口
关闭
时会触发 closeEvent()
事件
,我们把它
重写
后就能实现
关闭
窗口
时触发我们想要的效果。
重点就两个,如下所示:
重点一:
重写
组件的 closeEvent() 方法。
重点二: 主
窗口
继承
重写
的组件。
【代码】018.
PyQt5
_Q
Widget
_
事件
消息。
当一个控件被触发了一个特定的行为时, 就会调用特定的方法, 来将
事件
传递给开发人员, 方便处理
重写
这些
事件
方法, 就可以监听相关的信息
当用户对控件进行了某些操作时,根据
事件
机制,会一步一步传递(分发),最终触发指定的
事件
app = Qt
Widget
s.QApplication(sys.argv)
widget
= Qt
Widget
s.Q
Main
Window()
ui = General_Settings_Function()
ui.setupUi(
widget
)
widget
.show()
sys.exit(app.exec_())
到处都是坑呀,写这篇博客都写完了,结果保存失败,然后重新写了,。。。。。。。...
下面的方法用来改变或判断
窗口
的状态,包括最小化,最大化,隐藏,显示等。
changeEvent(self,event): 当控件的
窗口
状态的状态发生变化时调用。event参数包含QWindowStateChangeEvent类实例。
showEvent(self,event):当控件显示时调用。event参数包含QShowEvent类的实例。
hideEvent(self,event):当控件隐藏时调用。event
在PyQt中,Q
Widget
类对应基础的
窗口
组件,如果要在
窗口
组件
关闭
时截获
关闭
事件
,提供自己的控制机制,则可以通过在自定义的派生类中
重写
closeEvent方法。
重写
closeEvent方法的语法如下:def closeEvent(self,event):
在
重写
代码中可以选择接受
事件
还是忽略
事件
,接受则只需
窗口
关闭
,忽略则
窗口
保持不变。
from
PyQt5
.Qt
Widget
s import QMessageBox,QApplication
from
PyQt5
impo
PyQt5
关闭
主
窗口
的同时
关闭
所有子
窗口
重写
相关控件的父类的closeEvent()方法即可. 示例代码如下:
重写
Q
Main
Window类的closeEvent()方法
import sys
from
PyQt5
.Qt
Widget
s import (Q
Main
Window, QPushButton, QApplication,
Q
Widget
, QMessageBox)
from
PyQt5
.QtCore import (QCoreApplic
可以通过继承 QScrollBar 类并
重写
其 mouseMoveEvent() 方法来实现对 verticalScrollBar 的鼠标移动
事件
的
重写
。具体代码实现可以参考以下示例:
```python
from
PyQt5
.Qt
Widget
s import QScrollBar
class CustomScrollBar(QScrollBar):
def mouseMoveEvent(self, event):
# 在这里实现自定义的鼠标移动
事件
处理逻辑
然后,将需要
重写
鼠标移动
事件
的 verticalScrollBar 对象设置为 CustomScrollBar 的实例即可:
```python
from
PyQt5
.Qt
Widget
s import QScrollArea
scrollArea = QScrollArea()
scrollArea.setVerticalScrollBar(CustomScrollBar())
注意,以上代码仅为示例,具体实现可能需要根据实际需求进行调整。