python - 小部件未显示在最大化的 PyQt5 窗口中
问题描述
这是我的代码:
import sys
from PyQt5 import QtWidgets
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.showMaximized()
self.setWindowTitle("MyCoolBrowser")
self.label = QtWidgets.QPushButton("Click me", self)
self.label.setGeometry(0, 0, 50, 50)
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
运行代码时,我的按钮未显示在窗口中。但是,当我删除“self.showMaximized()”行时,就会显示按钮。有人可以帮忙吗?
解决方案
作为子级创建的小部件(未添加到布局中)在其父级已显示后不会自动显示。
简单的解决方案是在创建按钮showMaximized()
后移动,因为在创建所有对象后show()
调用任何相关函数始终是一种好习惯。
好的答案是正确设置一个中央小部件(这是 QMainWindow 显示为其主要内容的内容),如果要显示更多小部件,则可能使用布局管理器,并避免尝试使用固定几何图形(大小和位置)被认为是一种不好的做法(如果需要,使用垫片或拉伸):
import sys
from PyQt5 import QtWidgets
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("MyCoolBrowser")
container = QtWidgets.QWidget()
self.setCentralWidget(container)
layout = QtWidgets.QVBoxLayout(container)
self.label = QtWidgets.QPushButton("Click me")
layout.addWidget(self.label)
self.editor = QtWidgets.QLineEdit()
layout.addWidget(self.editor)
# add a "stretch" at the bottom of the layout in order to
# "push" everything on top
layout.addStretch()
self.showMaximized()
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
推荐阅读
- ios - AutoLayouts中乘数和常数的区别
- unity3d - 为什么我的头像编辑器在尝试预览肌肉设置时出错?
- r - 将多个列出的数据帧循环到一个函数中
- c# - 实现相等运算符的抽象类
- python - Django - 通过遍历类来获取模型对象的名称
- r - 提取括号内的字符
- java - 尝试运行 JavaFX 应用程序的可执行 jar - 错误:缺少 JavaFX 运行时组件
- matlab - 如何使 y 轴上的 MATLAB 图形中的公式与 LaTeX 解释器一起加粗?
- sharepoint - Sharepoint List 随机复制提交的项目
- c++ - 函数返回的值与 return 语句之前的函数体中的值不同