我在这里所做的就是创建一个继承QWidget
默认行为的自定义小部件。
from PyQt5.QtWidgets import QApplication, QWidget
import sys
from PyQt5.QtGui import QIcon
class CustomWidget(QWidget):
def __init__(self):
super().__init__()
self.setUI()
def setUI(self):
self.setGeometry(300,300,0,0)
self.setWindowTitle('CustomWidget')
self.setWindowIcon(QIcon('icon.png'))
self.show()
然后是创建实例的部分。当我使用以下代码段进行初始化和运行时,我看不到该小部件。
if __name__ == "__main__":
app = QApplication(sys.argv)
CustomWidget() <----------------------This line creates the problem
sys.exit(app.exec_())
然而,
somevalue = CustomWidget()
而且,
_ = CustomWidget()
我的问题是,为什么PyQt会出现这种行为?为什么我必须将实例分配给某个变量,即使我以后不使用它?
答案 0 :(得分:1)
因为如果您不存储对象的引用,它将被丢弃并释放其内存以便立即重用。
答案 1 :(得分:1)
原因是python&#39; reference counting。
只要一个对象没有更多的引用(将它指定给一个变量作为参考),它就会被解释器删除。