【发布时间】:2017-11-24 19:15:31
【问题描述】:
我正在处理使用 QT Designer 生成的 python 代码。我想从 MainWindow 上的按钮打开一个新对话框。当我使用以下代码时,对话窗口一创建就消失了。我认为这是因为 QDialog 对象在方法命中返回语句时被破坏。调用此对话的正确方法是什么?
def OpenDialogue(self):
DialogueWindow = QtGui.QDialog()
my_dialogue = MyDialogue.Ui_Dialog()
my_dialogue.setupUi(DialogueWindow)
DialogueWindow.show()
return
例如,我是否应该在定义 MainWindow 的同一位置实例化 DialogueWindow 并将其传递给此方法?
MainWindow的构造函数如下:
class Ui_MainWindow(QtGui.QMainWindow, object):
def setupUi(self, MainWindow):
[code]
实例化如下:
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = GUI.Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
app.exec_()
【问题讨论】:
-
可以显示MainWindow类的构造函数
-
请告诉我我的要求,除此之外你可以试试:
DialogueWindow = QtGui.QDialog(self) -
如果我将
DialogueWindow.show()更改为DialogueWindow.exec_(),它可以工作! -
由于您使用的是 QT Designer,您可能希望通过 uic 将您从 Designer 中准备好的 ui 导入您的代码。我之前通过 uic 将 ui 导入到我的 QDialog 时遇到了一些问题,显示效果很差。然后我检查了这个答案,它神奇地起作用。你可能想看看这里。 stackoverflow.com/questions/40886912/…
标签: python python-2.7 pyqt pyqt4 qt-designer