报错:

TypeError: question(QWidget, str, str, buttons: Union[QMessageBox.StandardButtons, QMessageBox.StandardButton] = QMessageBox.StandardButtons(QMessageBox.Yes|QMessageBox.No), defaultButton: QMessageBox.StandardButton = QMessageBox.NoButton): argument 1 has unexpected type 'Ui_MainWindow'


报错的提示是QMessage.question()函数的第一个参数的类型不对。
代码中也警告:Unexpected type(s):(Ui_MainWindow, str, str, Any, Any)

具体代码


我直接将自己定义的 tipDialog()函数放在了上面定义的Ui_MainWindow()类中,第一个参数使用了self,这里的self 应该指代的Ui_MainWindow()类,所以出现了类型不符合的错误。
因为这个类的代码是用QtDesigner自动生成的,就不想改类的代码了。但可以从QMessageBox.question函数下手解决问题。

那我们就开看看QMessageBox.question函数的参数规则

QMessageBox.question

使用QMessageBox.question可以直接弹出带选择按钮的对话框,然后可以通过判定来获取用户的选择结果。

基本格式QMessage.question(parent, title, content, button)
parent: 表示对话框所归属的程序窗口。填写父类(通常为self);若不属于任何程序窗口,为None。
title: 标题。
content: 内容。
button: 对话框按钮。

result = QMessageBox.question(self, '提示', '文件保存路径不存在,是否创建?', QMessageBox.Yes | QMessageBox.No,QMessageBox.No)

QMessageBox.Yes | QMessageBox.No 表示要显示什么样的按钮,最后一个参数QMessageBox.No表示默认选中哪个按钮。

报错解决方法:

QMessageBox.question的第一个参数设为None,就不会再报错了。

    def tipDialog(self,path):result = QMessageBox.question(None, '提示', '文件保存路径不存在,是否创建?', QMessageBox.Yes | QMessageBox.No,QMessageBox.No)  # 默认关闭界面选择Noif result == QMessageBox.Yes:os.makedirs(path)return Trueelse:return False

测试程序

为了验证,专门编了一段测试小代码,可以正常弹出提问对话框。

from PyQt5.QtWidgets import QMessageBox, QApplication
import os
import sysclass test():def __init__(self,path):self.path = pathdef tipDialog(self):result = QMessageBox.question(None, '提示', '文件保存路径不存在,是否创建?', QMessageBox.Yes | QMessageBox.No,QMessageBox.No)  # 默认关闭界面选择Noif result == QMessageBox.Yes:os.makedirs(self.path)return Trueelse:return Falseif __name__ == '__main__':# passapp = QApplication(sys.argv)demo = test('123')demo.tipDialog()sys.exit(app.exec_())

关于其他类型的对话框(消息对话框、提问对话框、警告对话框、严重错误对话框、关于对话框)可以学习下面这篇文章:
[ PyQt入门教程 ] PyQt5基本控件使用:消息弹出、用户输入、文件/目录选择对话框

参考文章

[PyQt5]{13} —— QMessageBox对话框

PyQt5 QMessageBox.question一种偷懒的快速对话框

QMessageBox.question报错:TypeError: question(QWidget, str, str, buttons: Union[QMessageBox.StandardBut相关推荐

  1. Python报错TypeError: 'str' object is not callable

    原文:http://blog.sina.com.cn/s/blog_71f3890901017rsh.html Python报错TypeError: 'str' object is not calla ...

  2. python3报错 TypeError: can’t concat bytes to str 原因与解决方法

    在做项目的时候,Python3会报错如下错误: TypeError: can't concat bytes to str 意思是: 类型错误:无法将字节连接到字符串 类似的错误有: TypeError ...

  3. python报错TypeError: must be str, not int

    python报错TypeError: must be str, not int 字符串拼接一个整型变量报错,代码如下 for i in range(1,586):res = 'test' + i 报错 ...

  4. python报错 TypeError: an integer is required

    问题描述: 在本地使用socket向NetAssist传送数据的时候,执行python文件后发现报出python 报错TypeError: an integer is required错误 代码: 1 ...

  5. python打开文件报错无效序列_解决Python 写文件报错TypeError的问题

    处理上传的文件: f1 = request.FILES['pic'] fname = '%s/%s' % (settings.MEDIA_ROOT, f1.name) with open(fname, ...

  6. python创建对象后调用对象的方法,报错TypeError: getName() takes 0 positional arguments but 1 was given

    源码 ## TODO: Create multiple cars and visualize them height = 4 width = 6 world = np.zeros((height, w ...

  7. VUE.JS 使用axios数据请求时数据绑定时 报错 TypeError: Cannot set property 'xxxx' of undefined 的解决办法...

    data里面做了定义 在方法里面进行赋值 用 this.info = repos.data 数据可以请求到,但是会报错 TypeError: Cannot set property 'listgrou ...

  8. 记录webpack使用问题,使用报错“UnhandledPromiseRejectionWarning,file-loader图片过大,无法加载图片,打包html文件报错TypeError

    记录webpack使用报错 版本号问题 运行npm run build,报错 "UnhandledPromiseRejectionWarning: TypeError: this.getRe ...

  9. Python报错TypeError: ‘User‘ object is not iterable

    Python报错TypeError: 'User' object is not iterable 原因 User对象是不可迭代的,我这里是因为User并不是list,所以是不可迭代的,所以不使用迭代即 ...

最新文章

  1. PHP curl 实现RESTful PUT DELETE 实例
  2. linux下几种反弹Shell方法的总结与理解
  3. Spring Cloud Stream消费失败后的处理策略(一):自动重试
  4. project项目管理案例_福清公司开展Project项目管理软件学习培训活动
  5. 海贼王热血航线正在连接服务器,航海王热血航线连接服务器失败?解决方法一览...
  6. java 动态转换器,Java 编程的动态性,第 5 部分: 动态转换类
  7. html5怎么跟安卓交互,html5怎么与android交互
  8. java 抽象类 方法_java 抽象类
  9. python有道字典_Python基于有道实现英汉字典功能
  10. java 计算 四分位,Java四分位计算方法
  11. java 阻塞队列介绍
  12. C mysql带参数存储过程_C# 调用Mysql 带参数存储过程
  13. tp5框架原理详解_工程测量教学合集,测量施工方案+原理解读,测量人员有它就够了...
  14. html5效果案例,10个优秀HTML5网站案例赏析
  15. sql中别名as,不写,以及使用双引号总结
  16. 【重要】国庆节快乐!有三AI所有课程限时7天优惠
  17. 信号处理基本概念:单位脉冲响应和单位阶跃响应
  18. 笔记本双系统linux显示屏显示错误(笔记本屏幕显示错误 | 外接显示屏显示错误)
  19. pygame的基础知识详解(主窗口创建、图像绘制、时钟对象和事件响应等知识点),请惠存
  20. pikachu靶场SQL,sqlmap解法

热门文章

  1. 深度解析与实践:运用 MATLAB 实现航天器 GPS 导航与姿态控制技术在航空航天工程中的应用与模拟--浅论
  2. SQL的注入对于安全测试的重要性~
  3. SAP ABAP基础知识总结图
  4. 树莓派(十一)树莓派驱动开发入门:从读懂框架到自己写驱动(上)
  5. jmeter接口并发测试,多个用户登录,并提取token传入下个接口
  6. Mongodb数据导出指定格式
  7. “Hello World!”团队第六周的第二次会议
  8. mac开发效率神器AIfred详细使用说明
  9. Scipy稀疏矩阵bsr_array
  10. 常用正则表达式最强汇总(含 Python 代码举例讲解 + 爬虫实战)