PySide 中是否必须在同一个函数中创建 QWidget 与 QApplication
原有的示例代码如下
#!/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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
第二种写法不行的原因在于在func里创建的wid是临时变量,退出func就被回收了,自然就没有显示了。那为什么上面那种写法没问题呢?因为app.exec_()是一个死循环,它会阻塞到你关闭程序为止,所以在func里的app和wid一直是可用的。