gpt4 book ai didi

python - QWidget::setLayout:尝试在 ProgramWindow ""上设置 QLayout "",该窗口已经有布局

转载 作者:行者123 更新时间:2023-12-01 01:56:06 25 4
gpt4 key购买 nike

import os
import sys

from PyQt5 import QtGui
from PyQt5 import QtWidgets

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

def main():
app = QtWidgets.QApplication(sys.argv)
programWindow = ProgramWindow()

programWindow.show()
sys.exit(app.exec_())


class ProgramWindow(QtWidgets.QMainWindow):

def __init__(self):
QtWidgets.QMainWindow.__init__(self)

self.setup_main_window()
self.set_window_layout()

def setup_main_window(self):
self.resize( 800, 600 )
self.setWindowTitle( "Test" )

def set_window_layout(self):
self.startSimulationButton = QPushButton( 'Start Simulation' )

horizontalLayout = QHBoxLayout()
horizontalLayout.addWidget( self.startSimulationButton )

horizontalGroupBox = QGroupBox( "My Group" )
horizontalGroupBox.setLayout( horizontalLayout )

main_vertical_layout = QVBoxLayout()
main_vertical_layout.addWidget( horizontalGroupBox )
self.setLayout( main_vertical_layout )


if __name__ == "__main__":
main()

当我运行它时,它显示一个空窗口并在控制台上抛出此错误:

QWidget::setLayout: 尝试在已经有布局的 ProgramWindow“” 上设置 QLayout“”

我已经看过 QLayout: Attempting to add QLayout "" to QWidget "", which already has a layout但我不认为我在做任何事情,这段代码有什么问题吗?

注释掉最后一行 self.setLayout( main_vertical_layout ) 可以修复它,但当然不会在屏幕上显示任何内容。

此代码应使用布局 QHBoxLayout 创建一个 QGroupBox 并将 QGroupBox 放入布局 QVBoxLayout 内。 QVBoxLayout 应该附加在我的主窗口上:

  1. QHBoxLayout
  2. QGroupBox
  3. QVBoxLayout
  4. 程序窗口

最佳答案

@Aviad 你的代码可能看起来像这样:

import sys

from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QPushButton,
QHBoxLayout, QGroupBox, QVBoxLayout)

class ProgramWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)

self.setup_main_window()
self.set_window_layout()

def setup_main_window(self):
self.centralwidget = QWidget()
self.setCentralWidget(self.centralwidget)
self.resize( 800, 600 )
self.setWindowTitle( "Test" )

def set_window_layout(self):
self.startSimulationButton = QPushButton( 'Start Simulation' )

self.horizontalLayout = QHBoxLayout(self.centralwidget)
self.horizontalLayout.addWidget( self.startSimulationButton )

self.horizontalGroupBox = QGroupBox( "My Group" )
self.horizontalLayout.addWidget( self.horizontalGroupBox )

self.main_vertical_layout = QVBoxLayout()
self.horizontalGroupBox.setLayout( self.main_vertical_layout )
button1 = QPushButton( 'Button1' )
button2 = QPushButton( 'Button2' )
self.main_vertical_layout.addStretch(1)
self.main_vertical_layout.addWidget( button1 )
self.main_vertical_layout.addWidget( button2 )

def main():
app = QApplication(sys.argv)
programWindow = ProgramWindow()

programWindow.show()
sys.exit(app.exec_())

if __name__ == "__main__":
main()

enter image description here

关于python - QWidget::setLayout:尝试在 ProgramWindow ""上设置 QLayout "",该窗口已经有布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50176661/

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