gpt4 book ai didi

python - 在组小部件内添加两个水平对齐的单选按钮

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

我正在尝试使用 PyQt5 创建一个 GUI,它将模拟一些数据并显示一些结果,但由于这是我第一次使用 PyQt5 构建 GUI,我发现很难水平对齐左上角的两个单选按钮图形用户界面的。

我尝试了以下代码,但出现以下错误:

Traceback (most recent call last):
File "example6.py", line 30, in <module>
screen = GroupBox()
File "example6.py", line 19, in __init__
vbox.setGeometry(10,10,100,100)
TypeError: setGeometry(self, QRect): argument 1 has unexpected type 'int'

这是我尝试过的代码:

from PyQt5.QtWidgets import *
import sys

class GroupBox(QWidget):

def __init__(self):
QWidget.__init__(self)

self.setGeometry(20,20,900,700)
self.setWindowTitle("Elevator Group Control System Simulator")
layout = QGridLayout()
self.setLayout(layout)

groupbox = QGroupBox("Algorithm to use")
groupbox.setCheckable(False)
layout.addWidget(groupbox)

hbox = QHBoxLayout()
hbox.setGeometry(10,10,100,100)
groupbox.setLayout(hbox)

radiobutton = QRadioButton("Good Picker")
hbox.addWidget(radiobutton)

radiobutton = QRadioButton("Naive Picker")
hbox.addWidget(radiobutton)


app = QApplication(sys.argv)
screen = GroupBox()
screen.show()
sys.exit(app.exec_())

编辑:即使应用了第一个答案中的建议,它仍然给了我一组覆盖整个 GUI 的单选按钮:

生成的 GUI

编辑2:在尝试了上一个答案中的建议后,我得到了这个:

第二个结果

最佳答案

正如之前的答案所示,第一个错误是因为setGeometry() 需要一个 QRect。

如果要将小部件对齐到左上角,则必须在右侧设置一个拉伸(stretch)以将其压缩到左侧,然后将布局中小部件的对齐方式指向 Qt::AlignTop。

from PyQt5 import QtCore, QtWidgets


class GroupBox(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.setGeometry(QtCore.QRect(20, 20, 900, 700))
self.setWindowTitle("Elevator Group Control System Simulator")
layout = QtWidgets.QGridLayout(self)
groupbox = QtWidgets.QGroupBox("Algorithm to use", checkable=False)
layout.addWidget(groupbox)

hbox = QtWidgets.QHBoxLayout()
groupbox.setLayout(hbox)
good_radiobutton = QtWidgets.QRadioButton("Good Picker")
naive_radiobutton = QtWidgets.QRadioButton("Naive Picker")
hbox.addWidget(good_radiobutton, alignment=QtCore.Qt.AlignTop)
hbox.addWidget(naive_radiobutton, alignment=QtCore.Qt.AlignTop)
hbox.addStretch()


if __name__ == "__main__":
import sys

app = QtWidgets.QApplication(sys.argv)
screen = GroupBox()
screen.show()
sys.exit(app.exec_())

enter image description here

更新:

from PyQt5 import QtCore, QtWidgets


class GroupBox(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.setGeometry(QtCore.QRect(20, 20, 900, 700))
self.setWindowTitle("Elevator Group Control System Simulator")
layout = QtWidgets.QGridLayout(self)
groupbox = QtWidgets.QGroupBox("Algorithm to use", checkable=False)
layout.addWidget(groupbox)

hbox = QtWidgets.QHBoxLayout()
groupbox.setLayout(hbox)
good_radiobutton = QtWidgets.QRadioButton("Good Picker")
naive_radiobutton = QtWidgets.QRadioButton("Naive Picker")
hbox.addWidget(good_radiobutton, alignment=QtCore.Qt.AlignTop)
hbox.addWidget(naive_radiobutton, alignment=QtCore.Qt.AlignTop)
hbox.addStretch()
layout.setColumnStretch(1, 1)
layout.setRowStretch(1, 1)


if __name__ == "__main__":
import sys

app = QtWidgets.QApplication(sys.argv)
screen = GroupBox()
screen.show()
sys.exit(app.exec_())

enter image description here

关于python - 在组小部件内添加两个水平对齐的单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55923316/

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