2016-11-26 35 views
-1

我在這裏所做的是創建一個繼承QWidget的默認行爲的自定義小部件。爲什麼我需要在PyQt5中分配給變量的Widget實例?

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的是顯示這種行爲?爲什麼我必須將實例分配給某個變量,即使我以後不使用它?

回答

1

原因是python的reference counting

只要對象沒有更多的引用(將其分配給一個變量作爲引用),它就會被解釋器刪除。

+0

感謝您的回答。 –

1

因爲如果不存儲對象的引用,它將被丟棄並釋放其內存以便立即重用。

+0

感謝您的回答。 –

相關問題