查看完整版本: [-- python qt4 消息框显示问题 --]

QTCN开发网 -> Python Qt GUI快速编程 -> python qt4 消息框显示问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

lason123 2017-05-03 19:06

python qt4 消息框显示问题

坛里高手们,请教一个python2.7  qt4消息框问题,以下代码的目的是为了显示一个消息框,运行下面的代码,能够正常显示消息框,
但是如果将绿色的两句改为封装成一个msg函数在主函数中被调用,发现消息框闪了一下就没了,请问为什么不行,被调用的msg函数应该怎么改,才可行,谢谢

#!/usr/bin/python
# messagebox.py
import sys
from PyQt4 import QtGui
import time

class MessageBox2(QtGui.QWidget):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('message box')
        
    def closeEvent(self, event):
        reply = QtGui.QMessageBox.question(self, 'Message',
         "Are you sure to quit?", QtGui.QMessageBox.Yes,
         QtGui.QMessageBox.No)
        
        if reply == QtGui.QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()  

def msg():

    qb= MessageBox2()
    qb.show()


if __name__=='__main__':
    
    app = QtGui.QApplication(sys.argv)
    qb= MessageBox2()
    qb.show()

    #msg()
    sys.exit(app.exec_())
---------------------------------------------------------------------------------------------------
改成
if __name__=='__main__':
    
    app = QtGui.QApplication(sys.argv)
    #qb= MessageBox2()
    #qb.show()

    msg()
    sys.exit(app.exec_())

bilyecit 2017-06-01 13:41
def msg():
    qb= MessageBox2()
    qb.show()

msg()函数里的qb是局部变量, msg函数返回后qb对象被销毁了。

如果一定要这样调用,可以把qb生命为全局变量:
def msg():
    global qb
    qb = MessageBox2()
    qb.show()

这样就没问题了。

lason123 2017-07-08 14:28
谢谢楼上的解答,你的答案是正确的


查看完整版本: [-- python qt4 消息框显示问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled