我正在尝试使用PyQt5创建一个GUI,它将模拟一些数据并显示一些结果,但是由于这是我第一次使用PyQt5构建一个GUI,所以我发现很难在左上角水平对齐两个单选按钮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'
编辑:即使在第一个答案中应用了建议之后,它仍然为我提供了覆盖整个GUI的一组单选按钮:
生成的GUI
编辑2:尝试了最后一个答案中的建议后,我得到了:
第二个结果
答案 0 :(得分:0)
setGeometry()
期望以QRect
作为参数。将hbox.setGeometry(10,10,100,100)
替换为:
hbox.setGeometry(QRect(10,10,100,100))
请注意,这将需要在您的导入中添加from PyQt5.QtCore import *
。
答案 1 :(得分:0)
如上一个答案所示,第一个错误是因为 setGeometry()需要QRect。
如果要将小部件对齐到左上角,则必须在右侧设置拉伸以将其压缩到左侧,然后将布局中的小部件的对齐方式指向Qt :: AlignTop。< / p>
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_())
更新:
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_())