Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:有人能猜出在这个任务中发生了什么吗?可能与PyQt有关_Python_Pyqt - Fatal编程技术网

Python:有人能猜出在这个任务中发生了什么吗?可能与PyQt有关

Python:有人能猜出在这个任务中发生了什么吗?可能与PyQt有关,python,pyqt,Python,Pyqt,我不熟悉这种语言,我正在使用PyQt进行一个项目 对于那些熟悉PyQt的人,我使用Qt设计器创建了.ui文件,然后尝试用python加载它 我发现了一件很“奇怪”的事 基本上,我的UI不适用于以下代码: def main(): app = QW.QApplication(sys.argv) loadUi('my-ui/mainwindow.ui').show() sys.exit(app.exec_()) 没有错误消息,窗口根本不显示 但是,如果我将代码更改为: def ma

我不熟悉这种语言,我正在使用PyQt进行一个项目

对于那些熟悉PyQt的人,我使用Qt设计器创建了.ui文件,然后尝试用python加载它

我发现了一件很“奇怪”的事

基本上,我的UI不适用于以下代码:

def main():
   app = QW.QApplication(sys.argv)
   loadUi('my-ui/mainwindow.ui').show()
   sys.exit(app.exec_())
没有错误消息,窗口根本不显示

但是,如果我将代码更改为:

def main():
   app = QW.QApplication(sys.argv)
   w = loadUi('my-ui/mainwindow.ui')
   w.show()
   sys.exit(app.exec_())
它像魔术一样工作

我现在真的很困惑。在赋值过程中Python会发生什么


你看,我唯一改变的是添加赋值。

赋值期间发生的事情,除了将对象绑定到名称(
w
)之外,是python增加了对象的引用计数。也就是说,从其他任何地方(即另一个对象或变量)引用此对象的次数

引用计数达到零的对象将被删除/“垃圾收集”,因为一般来说,现在程序代码可以与它们进行交互

因此,在第一个变体中发生的情况是,您正在创建小部件,但是由于任何地方都没有引用(与您的第二个代码被截取相反),因此它将在行后立即被销毁

loadUi('my-ui/mainwindow.ui').show()
完成了

文件中也有(相当)简短的说明。
当然,一般来说,python垃圾收集有很多内容,请参见,例如…

非常感谢。我以前从未见过这样的垃圾收集。