少艾 发表于 2020-9-16 13:25

关于QMessageBox报错的问题

想使用QMessageBox实现提示弹窗得功能,只要点击按钮,就会出现提示。但是代码报错了,好像是说QMessageBox的使用格式有问题?但是查了一下没啥问题啊,在网上也搜了很久,相关的信息太少了,所以只能发个求助帖了,希望各位帮忙解决一下。
报错如下,因为太长了,不太好截图所以就只能复制了。
download_warning = QMessageBox.question(self, "确认下载", '确定下载文件到路径中吗?',
TypeError: question(QWidget, str, str, buttons: Union = QMessageBox.StandardButtons(QMessageBox.Yes|QMessageBox.No), defaultButton: QMessageBox.StandardButton = QMessageBox.NoButton): argument 1 has unexpected type 'My_Window'

代码如下
from PySide2.QtWidgets import QApplication, QMessageBox
from PySide2.QtUiTools import QUiLoader
from PySide2 import QtXml
from PySide2 import QtWidgets
from PyQt5.QtWidgets import *
import sys

class My_Window():
    def __init__(self):
      self.ui = QUiLoader().load('demo.ui')
      self.ui.pushButton.clicked.connect(lambda :self.box(self.ui.pushButton))

    def box(self, btn):
      if btn.text() == '对话框':
         download_warning = QMessageBox.question(self, "确认下载", '确定下载文件到路径中吗?',
                                          QMessageBox.Yes|QMessageBox.No, QMessageBox.Yes)
         if download_warning == QMessageBox.Yes:
               print(download_warning)


if __name__ == "__main__":
    app = QApplication([])
    window = My_Window()
    window.ui.show()
    sys.exit(app.exec_())

少艾 发表于 2020-9-16 13:27

程序可以运行,但是点击yes或者no之后就会报错

JuncoJet 发表于 2020-9-16 14:51

应该不是你写的问题,学习Qt一个星期,发现Qt有种机制,当当前窗口是唯一窗口时你关闭,会退出程序
    QApplication a(argc, argv);
    a.setQuitOnLastWindowClosed(false);

C++的代码,Python自己百度

少艾 发表于 2020-9-16 18:25

JuncoJet 发表于 2020-9-16 14:51
应该不是你写的问题,学习Qt一个星期,发现Qt有种机制,当当前窗口是唯一窗口时你关闭,会退出程序
    QA ...

好的,我去查查
页: [1]
查看完整版本: 关于QMessageBox报错的问题