正在尝试使用PyQt4构建用户界面。有一个弹出的对话框窗口,我想它做点什么,然后关闭,当'确定'被按下。不幸的是,我似乎无法让它正常工作-尝试了Dialog.exec廑u()、Dialog.close()、self.exec廑u()、self.close()的各种组合,并向Dialog.accept等发出“接受”信号。到目前为止,一切都不起作用,我也不太确定为什么。这是密码:
对话框窗口初始化为这样
def begin_grab(self):
self.GrabIm=qtg.QDialog(self)
self.GrabIm.ui=Ui_Dialog()
self.GrabIm.ui.setupUi(self.GrabIm)
self.GrabIm.show()
对话框窗口
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
...
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("accepted()")), self.accept)
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def accept(self):
if self.radioButton.isChecked()==True: #assume it is true
#Call continuous grabber
print "Grabbing continuously"
Dialog.exec_() #Close it here
else:
#Call trigger server
print "Grabbing triggered"
self.exec_()
一直发生的主要事情是,在accept()函数中,一条消息说“Dialog”是未知变量,或者如果我使用self.exec_u()或类似的函数,它说exec_u()不是已知属性。如果我尝试执行accept(self,Dialog),并将self.accept(Dialog)放入connect语句中,它也会崩溃。
任何帮助都将不胜感激。
你做错了。您不应该修改Qt设计器生成的代码(
Ui_Dialog
)。您应该将QDialog
划分为子类,并在其中定义accept
:然后初始化为:
但是看看你的代码,我不会那样做的。让对话框返回
accept/reject
,然后在调用者(即主窗口)中执行条件操作:以及呼叫者代码:
您可以重新实现closeEvent,它将帮助您在对话框退出之前执行一些过程
相关问题 更多 >
编程相关推荐