鱼C论坛

 找回密码
 立即注册
查看: 2840|回复: 12

[已解决]pyqt问题

[复制链接]
发表于 2023-7-4 18:46:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 歌者文明清理员 于 2023-7-4 22:32 编辑

如果是chat狗屁通脚本
请不要回复
"谢谢"对鱼C论坛积极地脚本攻击
我很想扣分

main.py
  1. from PyQt6 import uic
  2. from PyQt6.QtWidgets import QApplication, QMainWindow

  3. form_class = uic.loadUiType("picture_get.ui")[0]

  4. class PictureGet(QMainWindow, form_class):
  5.     def __init__(self):
  6.         super().__init__()
  7.         self.frame2.setVisible(False)

  8. if __name__ == "__main__":
  9.     app = QApplication([])
  10.     window = PictureGet()
  11.     window.show()
  12.     app.exec()
复制代码

err:
  1. PS E:\Python123> cd h
  2. PS E:\Python123\h> python main.py
  3. Traceback (most recent call last):
  4.   File "E:\Python123\h\main.py", line 13, in <module>        
  5.     window = PictureGet()
  6.   File "E:\Python123\h\main.py", line 9, in __init__
  7.     self.frame2.setVisible(False)
  8. AttributeError: 'PictureGet' object has no attribute 'frame2'
  9. PS E:\Python123\h>
复制代码

why,ui里面不是有frame2了吗
最佳答案
2023-7-4 20:02:03
        super().__init__()
        self.setupUi(self)
        self.frame2.setVisible(False)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-4 18:46:40 | 显示全部楼层
问题出在您的代码中,在实例化PictureGet类的时候,调用了self.frame2.setVisible(False),但是并没有定义frame2属性。

要解决这个问题,您需要在PictureGet类的__init__方法中添加一个self.frame2属性,并将其初始化为相应的组件。您可以参考下面的修改后的代码:
  1. python
  2. class PictureGet(QMainWindow, form_class):
  3.     def __init__(self):
  4.         super().__init__()
  5.         self.setupUi(self)  # 添加这一行来初始化界面
  6.         self.frame2.setVisible(False)
复制代码

通过调用self.setupUi(self)来初始化界面,它会根据UI文件中的定义创建并初始化界面组件,包括frame2,这样就能够正确地访问和操作frame2了。然后您可以再次运行代码,看看问题是否得到解决。

点评

我很赞同!: 0.0 不,我坚决不同意楼主的看法!: 0.0
我很赞同!: 0 不,我坚决不同意楼主的看法!: 0
您的回答正确,但我不想设置您为“最佳”。最佳答案的选择权在提问者手上——小甲鱼  发表于 2023-7-4 18:51
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 18:46:44 | 显示全部楼层
根据您提供的代码和错误信息,问题出在以下代码行:
  1. python
  2. self.frame2.setVisible(False)
复制代码

错误提示指出'PictureGet' object has no attribute 'frame2',也就是说PictureGet对象没有frame2属性。根据您提供的UI代码,frame2centralwidget的子widget,并不属于PictureGet对象。

要解决此问题,您可以尝试修改代码如下:

self.frame2.setVisible(False) 修改为 self.centralwidget.frame2.setVisible(False)

这样就能正确地访问到 centralwidget 下的 frame2 了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 19:32:02 | 显示全部楼层
在?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-7-4 19:33:21 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 19:34:04 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-4 19:35:01 | 显示全部楼层

不要用Chat狗屁通
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 19:36:12 | 显示全部楼层

这个都不需要chatgpt,一看就看出来了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 20:02:03 | 显示全部楼层    本楼为最佳答案   
        super().__init__()
        self.setupUi(self)
        self.frame2.setVisible(False)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 20:06:53 | 显示全部楼层
你故意的吧,这个我都会,同意楼上
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-4 22:33:01 | 显示全部楼层
sfqxx 发表于 2023-7-4 20:06
你故意的吧,这个我都会,同意楼上

真忘了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-4 22:44:46 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-27 19:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表