PySide 中是否必须在同一个函数中创建 QWidget 与 QApplication

发布于 2022-09-01 16:12:28 字数 660 浏览 19 评论 0

原有的示例代码如下

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PySide import QtGui

def func():
    app = QtGui.QApplication(sys.argv)
    wid = QtGui.QWidget()
    wid.show()
    sys.exit(app.exec_())
func()

为了让代码结构清晰一些,我决定把创建 QApplication 的代码分出来,即

#!/usr/bin/python
# -*- coding: utf-8 -*-

# simple.py

import sys
from PySide import QtGui

def func():
    wid = QtGui.QWidget()
    wid.show()

app = QtGui.QApplication(sys.argv)
func()
sys.exit(app.exec_())

然后,再执行的话,就无法显示出窗口。只有在终端中按 Ctrl+Z 再按 Ctrl+D 才能结束进程。

请问,这一现象的原因是什么?有办法将这两部分的代码拆分吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

柠北森屋 2022-09-08 16:12:28

第二种写法不行的原因在于在func里创建的wid是临时变量,退出func就被回收了,自然就没有显示了。那为什么上面那种写法没问题呢?因为app.exec_()是一个死循环,它会阻塞到你关闭程序为止,所以在func里的app和wid一直是可用的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文