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

 翔英建辉千慧 发布于 2022-11-03 16:11

原有的示例代码如下

#!/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 才能结束进程。

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

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

    2022-11-05 17:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有