gpt4 book ai didi

python - 为什么我的标签在我的 QHBoxLayout 中堆叠在一起?

转载 作者:行者123 更新时间:2023-12-04 15:40:05 26 4
gpt4 key购买 nike

很简单,我想使用 Python 的 PYQT5 在水平框布局内添加两个标签。

当我执行这段代码时,这两个标 checkout 现在彼此的顶部,即使将它们添加到 QHBoxLayout 应该从左到右放置它们也是如此。

我该如何解决这个问题?

  • 编译器:Python 3.7.4 32 位
  • IDE:Visual Studio Code
  • 操作系统:Windows 10

我的代码:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

class Interface(QMainWindow):
def __init__(self):
super().__init__()

self.title = 'debug'
self.mainLayout = QHBoxLayout()
self.initGUI()

def initGUI(self):
self.setGeometry(0,0,200,200)
self.setFixedSize(self.size())
self.setWindowTitle(self.title)

label1 = QLabel('test 1',self)
label2 = QLabel('test 2',self)
self.mainLayout.addWidget(label1)
self.mainLayout.addWidget(label2)

self.setLayout(self.mainLayout)
self.show()

def close_application(self):
sys.exit()

if __name__ == '__main__':
app = QApplication([])
window = Interface()
sys.exit(app.exec_())

最佳答案

说明:

QMainWindow 是一个具有默认布局的特殊小部件:

enter image description here

不允许建立另一个布局并清楚地指示在终端/CMD 中执行代码时获得的错误消息:

QWidget::setLayout: Attempting to set QLayout "" on Interface "", which already has a layout

所以当布局没有建立时,它不处理QLabels的位置,而你,当作为parent传递给window-self时,两者都会被设置在window中左上位置。

解决方案:

作为the docs指出,您必须创建一个用作容器的中央小部件,然后设置布局:

def initGUI(self):
self.setGeometry(0,0,200,200)
self.setFixedSize(self.size())
self.setWindowTitle(self.title)

central_widget = QWidget() # <---
self.setCentralWidget(central_widget) # <---

label1 = QLabel('test 1')
label2 = QLabel('test 2')
self.mainLayout.addWidget(label1)
self.mainLayout.addWidget(label2)

central_widget.setLayout(self.mainLayout) # <---
self.show()

关于python - 为什么我的标签在我的 QHBoxLayout 中堆叠在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58123629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com