Dlaczego poniższy przykład działa tylko wtedy, gdy tworzona jest niepotrzebna zmienna _
?Dlaczego muszę zachować zmienną wskazującą na moją QWidget?
Zmienna _
jest przypisana i nigdy nie jest używana. Zakładam, że dobry kompilator zoptymalizuje, a nawet go nie stworzy, zamiast tego robi różnicę.
Po usunięciu _ =
i pozostawieniu tylko Test()
, zostanie utworzone okno, ale miga ono i znika natychmiast, a pyton zawiesza się na zawsze.
Oto kod:
import sys
from PyQt4 import QtGui
class Test(QtGui.QWidget):
def __init__(self):
super().__init__()
self.show()
app = QtGui.QApplication(sys.argv)
_ = Test()
sys.exit(app.exec_())
Masz na myśli 'Test()' zamiast 'Przykład()'? –
Jeśli obiekt w języku Python nie jest odwoływany, jest to kolekcja śmieci, która wyjaśniałaby, dlaczego okno migocze, a następnie znika. –
A zatem zmienna, której program nie będzie działał bez użycia, jest "bezużyteczna"? – kindall