我试图找出打开后窗户关闭的原因。我查看了为什么这种情况发生在其他人的例子,但我的应用程序设置有点不同(可能是pyqt的新版本比我正在看的那些或因为我从工具栏菜单中启动)。
以下是启动Class1Base类型的第一个窗口并且启动但丢失第二个窗口NewWindow(必须更改匿名名称)的代码的主要部分。
在ToolbarMenuSetup.py中:
class ToolbarMenuSetup(object):
# only including call to the below for brevity
def clickOpenClass1(self):
self.config = self.toolbarConfig()
retval = Class1(self.class1_dlg, self.config)
在Class1.py中:
class Class1(Class1Base):
def __init__(self, dlg, config):
self.dlg = dlg
self.iface = self.dlg.iface
self.config = config
self.dlg.ui.btnOpenWindow.clicked.connect(self.openNewWindow)
self.run()
在Class1Base.py中:
class NewWindow(Qt.QDialog, UI_NewWindowBase):
def __init__(self, ToolbarMenuSetup):
QtGui.QDialog.__init__(self)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setupUi(self)
class Class1Base():
def __init__(self, dlg, config):
self.dlg = dlg
self.iface = self.dlg.iface
self.run()
def openNewWindow(self):
window = NewWindow(self)
window.show()
def run(self):
self.dlg.show()
result = self.dlg.exec_()
if(result):
performCalculations()
# this function not included for brevity
非常感谢任何帮助!
解决方案:
- 将self.window = None
添加到run()中
- 在openNewWindow()
self.