python - PyQt 自定义小部件不可见
问题描述
按照“创建简单 GUI”中概述的示例,我尝试创建自定义小部件,但似乎没有显示任何内容。它似乎是我能想象的最简单的小部件,但仍然缺少一些东西,我不知道是什么。
from PyQt5.QtWidgets import *
import sys
class customWidget(QWidget):
def __init__(self, *args, **kwargs):
super(customWidget, self).__init__(*args, **kwargs)
layout = QHBoxLayout()
label = QLabel("Que chinga")
layout.addWidget(label)
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.setWindowTitle("Esta locura")
label = customWidget()
self.setCentralWidget(label)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
解决方案
__init__
在of中执行以下任何customWidget
操作(它们在概念上是相同的):
- 创建布局
self.setLayout(layout)
后添加; - 改为;
layout = QHBoxLayout()
_layout = QHBoxLayout(self)
原因是您没有设置小部件的布局,因此 QLabel 没有父级并且不会单独显示。
在实践中,customWidget
实例可以知道关于这些对象的任何信息,因此没有理由显示它们。
我还建议您:
- 阅读类和实例:虽然它与这个问题没有直接关系,但它有很多共同点,因为 Qt 对象(例如 QWidget 子类)的父级关系与实例的 OOP 方面密切相关。
- 始终为类(
CustomWidget
, notcustomWidget
)使用大写的名称,因为小写的名称只能用于变量和函数名称。
推荐阅读
- python - 将字符串转换为http字符串格式
- html - 将鼠标悬停在其父元素上时,如何将 3 个元素缩放到不同的大小?
- c++ - 将数据输入 Arduino 上的 uint8_t 数组 (C/C++)
- python - 错误:无法从 /usr/local/opt/pygtk/.brew/pygtk.rb 获取运行时依赖项
- julia - 在 Julia 中将位数组{2} 转换为数组{Bool,1}
- android - 为什么在 Android 模拟器中播放的音频带有回声/噪音?
- asp.net-core - Asp .net core razor pages urldata
- python - Django:如何创建类枚举来定义选择
- django - 将 django docker 容器部署到弹性 beantalk
- php - 我不确定为什么我的代码没有更新数据库