子类 QWidget 不可见

问题描述

我有最简单的子类 QWidget 形式:

from PyQt6.QtWidgets import *
import sys


class Widget(QWidget):
    def __init__(self,parent,*args,**kwargs):
        QWidget.__init__(self,parent=parent,**kwargs)

        print(self.parent().objectName())


def e(e,v,t):
    sys.__excepthook__(e,t)

if __name__ == "__main__":
    sys.excepthook = e
    app = QApplication(sys.argv)

    mainWindow = QWidget(objectName="MainWindow")
    mainWindow.setLayout(QHBoxLayout(mainWindow))

    widget1 = Widget(mainWindow,styleSheet="background-color: red")
    widget2 = QWidget(mainWindow,styleSheet="background-color: green")

    mainWindow.layout().addWidget(widget1)
    mainWindow.layout().addWidget(widget2)

    mainWindow.showMaximized()

    app.exec_()

当我运行程序时,只显示 QWidget,而 Widget 应该在的位置有一个空白:

Current window

如果我将 Widget 更改为 QWidget,则窗口中会显示正确的图像:

enter image description here

我试过了:

  • widget1.show()
  • widget1.raise_()
  • widget1.setVisible(True)
  • widget1.parent().setVisible(True)
  • Widget 构造函数内部和外部的所有上述内容。
  • 尝试了 PySide2PySide6PyQt5PyQt6app.exec_() 需要为 app.exec()PyQt6)。

还有:

    print(self.styleSheet() 构造函数中的
  • Widget 打印 background-color: red,显示 **kwargs are being correctly set
  • Widget的构造函数中,打印了"MainWindow",说明父级设置正确,"MainWindow"是我创建的顶层窗口的objectName({{1 }}).
  • 尝试使用 PyCharm 并内置 Python IDLE。

系统

  • Python 3.9
  • PyQt6.0.1/PySide6.0.1
  • Windows 10

我这辈子都看不明白为什么 mainWindow 类不会显示;我做错了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...