在Python 3中使用QTDesigner 5打开第二个窗口
我对QTDesigner 5有问题,这应该是微不足道的,但我就是无法解决问题 我想做的是在单击按钮时打开第二个窗口: 我用QTDesigner(PyQT5!)设计了主窗口和次窗口,并用pyuic将它们转换为.py文件。主窗口打开时不会出现以下代码问题:在Python 3中使用QTDesigner 5打开第二个窗口,python,class,user-interface,window,pyqt5,Python,Class,User Interface,Window,Pyqt5,我对QTDesigner 5有问题,这应该是微不足道的,但我就是无法解决问题 我想做的是在单击按钮时打开第二个窗口: 我用QTDesigner(PyQT5!)设计了主窗口和次窗口,并用pyuic将它们转换为.py文件。主窗口打开时不会出现以下代码问题: from PyQt5 import QtGui, QtWidgets, QtCore, uic import UI14 as UIImport import GIPrompt as GIImport class MainWindow(
from PyQt5 import QtGui, QtWidgets, QtCore, uic
import UI14 as UIImport
import GIPrompt as GIImport
class MainWindow(UIImport.Ui_MainWindow):
def __init__(self, window):
UIImport.Ui_MainWindow.__init__(self)
self.setupUi(window)
self.radioButtonGI.clicked.connect(self.openGIPrompt)
def openGIPrompt(self):
windowGI = QtWidgets.QDialog()
Gi = GIPrompt(windowGI)
windowGI.show()
class GIPrompt(GIImport.Ui_GIPrompt):
def __init__(self, windowGI):
GIImport.Ui_GIPrompt.__init__(self)
self.setupUi(windowGI)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
prog = MainWindow(window)
window.show()
sys.exit(app.exec_())
如果我将以下内容添加到主功能中,“GiPrompt”窗口也将与主窗口一起打开:
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
prog = MainWindow(window)
window.show()
"""Open secondWindow"""
windowGI = QtWidgets.QDialog()
Gi = GIPrompt(windowGI)
windowGI.show()
sys.exit(app.exec_())
如果我试图通过openGIPrompt函数打开第二个窗口,则什么也不会发生。我没有收到错误消息,也没有出现窗口。然而,print命令告诉我第二个窗口的init_函数被调用
有人知道问题出在哪里吗
提前谢谢 我已经解决了问题: 显然,初始化的窗口由垃圾收集处理,因为变量没有声明为self: 这解决了问题:
from PyQt5 import QtGui, QtWidgets, QtCore, uic
import UI14 as UIImport
import GIPrompt as GIImport
class MainWindow(UIImport.Ui_MainWindow):
windowGI=None
Gi=None
def __init__(self, window):
UIImport.Ui_MainWindow.__init__(self)
self.setupUi(window)
self.radioButtonGI.clicked.connect(self.openGIPrompt)
def openGIPrompt(self):
self.windowGI = QtWidgets.QDialog()
self.Gi = GIPrompt(self.windowGI)
self.windowGI.show()
class GIPrompt(GIImport.Ui_GIPrompt):
def __init__(self, windowGI):
GIImport.Ui_GIPrompt.__init__(self)
self.setupUi(windowGI)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
prog = MainWindow(window)
window.show()
sys.exit(app.exec_())
我已经解决了这个问题: 显然,初始化的窗口由垃圾收集处理,因为变量没有声明为self: 这解决了问题:
from PyQt5 import QtGui, QtWidgets, QtCore, uic
import UI14 as UIImport
import GIPrompt as GIImport
class MainWindow(UIImport.Ui_MainWindow):
windowGI=None
Gi=None
def __init__(self, window):
UIImport.Ui_MainWindow.__init__(self)
self.setupUi(window)
self.radioButtonGI.clicked.connect(self.openGIPrompt)
def openGIPrompt(self):
self.windowGI = QtWidgets.QDialog()
self.Gi = GIPrompt(self.windowGI)
self.windowGI.show()
class GIPrompt(GIImport.Ui_GIPrompt):
def __init__(self, windowGI):
GIImport.Ui_GIPrompt.__init__(self)
self.setupUi(windowGI)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QMainWindow()
prog = MainWindow(window)
window.show()
sys.exit(app.exec_())