这是我正在搞乱的一些示例代码,当我发现一些我根本不理解的东西时。
此代码似乎有效
from PyQt4 import QtGui, QtCore
import sys
class Window(QtGui.QWidget):
def __init__(self):
pass
ap = QtGui.QApplication(sys.argv)
var = Window()
var.show()
sys.exit(ap.exec_())
但这导致窗口出现而不是快速连续消失。 (第二个底线改变了)
from PyQt4 import QtGui, QtCore
import sys
class Window(QtGui.QWidget):
def __init__(self):
pass
ap = QtGui.QApplication(sys.argv)
Window().show()
sys.exit(ap.exec_())
我根本无法理解为什么。在我对python和Qt的所有理解中,我无法理解底部失败的原因。它是垃圾收集还是什么?
谢谢!
答案 0 :(得分:3)
在第二个版本中,您没有保留对Window
实例的引用,因此Python将在执行该行代码后销毁它。在第一个版本中,您通过代码块在var
中保留引用。最重要的是,当您致电var
时,ap.exec_()
存在。
答案 1 :(得分:0)
它有效,但不是在pass
中写__init__()
,而是将其写下来:
super(Window, self).__init__()
您的__init__()
功能为空。
以下是完整代码:
from PyQt4 import QtGui
import sys
class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
ap = QtGui.QApplication(sys.argv)
var = Window()
var.show()
sys.exit(ap.exec_())
我用PySide测试过,也应该在PyQt上工作。