我有一个弹出对话框的问题。我有一个组合框,当选项更改时会弹出一个带有textedit小部件的对话框,执行一些操作并在textedit小部件中插入一些文本。
这就是我用于弹出窗口的内容:
def function_1(self):
dialog = QDialog()
dialog.ui = Ui_Dialog_popup()
dialog.ui.setupUi(dialog)
dialog.setAttribute(QtCore.Qt.WA_DeleteOnClose)
dialog.exec_()
我在QtDesignere中使用弹出的gui代码在一个单独的py文件中。
弹出对话框出现,但如果对话框未关闭,则无法执行任何其他操作。您知道我该如何处理此问题?感谢。
答案 0 :(得分:5)
答案 1 :(得分:1)
详细说明Mat所说的内容:show()函数会立即返回,并且由于对话框是此函数的本地对象,因此只要“function_1”返回,对象就会被删除。您可能希望将对话框设置为成员或全局(以适合您的要求为准),以便对象保留在内存中。
HTH
答案 2 :(得分:0)
由于您正在设置WA_DeleteOnClose
窗口属性,我假设您希望每次调用function_1
方法时都要创建一个新对话框(这可能是一个好主意)。
如果是这样,解决问题的最简单方法(基于您已经给出的代码)是给对话框一个父级(因此它保持活动状态),然后显示它modelessly使用show()
:
def function_1(self):
dialog = QDialog(self)
dialog.ui = Ui_Dialog_popup()
dialog.ui.setupUi(dialog)
dialog.setAttribute(QtCore.Qt.WA_DeleteOnClose)
dialog.show()