gpt4 book ai didi

python - 让事件处理函数创建持久的 PYQT4 对象

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:03 26 4
gpt4 key购买 nike

我试图在单击补丁后弹出一个窗口。我已正确匹配事件并且窗口在屏幕上闪烁,但它在事件函数结束后立即关闭。我希望窗口能够持续存在。我怎样才能让事件处理函数创建持久的东西?

窗口类在下面

class pickwindow(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.resize(250, 150)
self.move(300, 300)
self.setWindowTitle('Selected SubChannel')
self.l = QtGui.QGridLayout(self)
text1 = QtGui.QLabel('Please select 1 or more Subchannel')
self.chanlist = QtGui.QLabel('')

pick 事件处理程序是以下代码片段:

def onpick(event):
mouseevent = event.mouseevent
artist = event.artist
chanselect = pickwindow()
chanselect.show()

最佳答案

当处理程序返回时,窗口将被垃圾收集,因为您没有保留对它的引用。

根据您的示例代码,pickwindow 看起来应该是 QDialog :

class pickwindow(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
...

这将允许使用 exec 打开窗口,它将阻塞直到用户关闭它:

def onpick(event):
...
chanselect = pickwindow()
chanselect.exec_()

理想情况下,对话框还应具有“确定”/“取消”按钮,其单击信号连接到对话框的 accept()reject()插槽。这将允许您执行以下操作:

    if chanselect.exec_() == QtGui.QDialog.Accepted:
# do stuff with selected channel...
else:
# user cancelled...

编辑:

如果您不希望对话框被阻止,则为其指定一个父级,然后使用 show 打开它。如果 onpick 是主窗口的一个方法,那可能是最好的,这样你就可以这样做:

def onpick(self, event):
...
chanselect = pickwindow(self)
chanselect.show()

关于python - 让事件处理函数创建持久的 PYQT4 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27364375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com