【发布时间】:2017-06-29 19:43:26
【问题描述】:
假设我有 2 个窗口,其中一个在单击菜单项时打开另一个窗口:
class ProjectWindow(QtWidgets.QMainWindow, project_window_qt.Ui_ProjectWindow):
def __init__(self):
super(ProjectWindow, self).__init__()
# Setup the main window UI
self.setupUi(self)
self.new_project_window = None
# Handle menu bar item click events
self.actionNewProject.triggered.connect(self.new_project)
def new_project(self):
self.new_project_window = project_new_window.NewProjectWindow()
self.new_project_window.show()
def refresh_projects(self):
with open(os.path.join(self.directory, 'projects.txt'), 'r') as f:
projects = json.load(f)
return projects
和
class NewProjectWindow(QtWidgets.QDialog, project_new_window_qt.Ui_NewProjectWindow):
def __init__(self,):
super(NewProjectWindow, self).__init__()
# Setup the main window UI
self.setupUi(self)
一旦用户关闭new_project_window,我希望在ProjectWindow 类中调用refresh_projects 方法。
我想过设置一个事件监听器来检查new_project_window何时关闭,然后在发生这种情况时调用refresh_projects,但窗口在打开后立即关闭:
def new_project(self):
self.new_project_window = project_new_window.NewProjectWindow(self.directory, self.project_list)
self.new_project_window.onClose.connect(self.refresh_projects)
self.new_project_window.show()
这是正确的方法吗?或者有没有办法直接从new_project_window 对象中调用refresh_projects?
【问题讨论】:
-
什么是 onClose?