我在PyQt
中有一个mainWindow
和一个Frame
,在我的main
程序中我有以下代码:
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
Frame = QtGui.QFrame()
ui = Ui_Frame()
ui.setupUi(Frame)
Frame.show()
sys.exit(app.exec_())
上面的代码,显示了一个主窗口和一个框架
我为我的程序创建了一个类:
class ShowHide(object):
def __init__(self):
pass
def showFrameMaterials(self):
Frame = QtGui.QFrame()
ui = Ui_Frame()
ui.setupUi(Frame)
Frame.show()
print "it's debugging"
def showMainWindow(self):
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
这导致我有两个函数,我调用showMainWindow()
和showFrameMaterials()
,然后我更改了main,例如:
obj = ShowHide()
obj.showMainWindow()
obj.showFrameMaterials()
sys.exit(app.exec_())
但是我没有看到任何窗口,我返回到代码,将mainwindow
的代码放入主程序并调用showFrameMaterials()
,例如:
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
obj = ShowHide()
obj.showMainWindow()
obj.showFrameMaterials()
sys.exit(app.exec_())
但我只看到主窗口。。。你知道吗
问题:我的问题在哪里?
在基于类的版本中没有看到任何窗口,因为函数调用finalize和PyQt对象正在被垃圾收集。在第一种简单的情况下,包含PyQt对象的变量在持续时间内保持在范围内。你知道吗
在这个简单的例子中,最简单的方法就是将PyQt对象存储在实例变量中,即
self.Frame
和self.MainWindow
来保留对对象的引用,这样Python就不会垃圾收集它们。你知道吗一般来说,您不会以这种方式使用PyQt。您可以对相关对象进行子类化,并在初始化器中进行设置。你知道吗
相关问题 更多 >
编程相关推荐