【发布时间】:2018-04-21 00:48:43
【问题描述】:
我编写了一个由两个独立文件组成的 python GUI 程序;一个用于逻辑代码,另一个用于使用 PyQt4 的 GUI。某些对象(按钮、文本字段...)的行为在整个代码中发生了变化,我需要通过单击 QAction 类菜单项将所有内容重置为其原始状态。我该怎么做?
编辑:应该将 GUI 重置为原始状态的功能:
def newSession(self):
self.ui.setupUi(self)
self.filename = ""
self.paramsSplitted = []
self.timestep = None
self.index = None
self.selectedParam = None
self.selectedMethod = None
--Snip--
【问题讨论】:
-
@nanithehaddock:我检查了链接,但它讨论了删除小部件而不是重置它们。
-
您是否使用 Qt Designer 来生成您的 GUI?如果你这样做了,你的 GUI 主类有方法
self.setupUi。您可以将 QAcion 的信号triggered连接到此方法。然后 GUI 将设置为初始状态。我没有检查 - 所以不能保证...... -
@Sven:是的,我使用了 Qt Designer,它有 self.seupUi 方法。我之前也尝试过你的建议,但问题是打开 QFileDialog 的按钮之一在通过函数再次调用它后什么也不做。我编辑了我的帖子并添加了有关程序的部分。有什么想法吗?
-
@gnome。您不应该在
newSession中调用setupUi,因为它会重新创建所有小部件、布局等并断开所有信号。setupUi应与所有信号连接和任何其他您只想在应用程序启动时执行一次 的初始化一起进入__init__。然后,newSession方法应该只包含重置状态变量并将相关小部件恢复到其起始状态所需的任何内容。这个方法应该在__init__结束时调用,然后在需要重置gui的时候调用。