Python 我想设置复选框边距?对齐
我制作了一些Python 我想设置复选框边距?对齐,python,checkbox,pyqt5,qdialog,Python,Checkbox,Pyqt5,Qdialog,我制作了一些Qdialog,当我执行代码时,复选框没有均匀对齐: 但我想这样: 代码如下: class SelectPay_Dialog2(Qdialog): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(500, 200, 400, 200) self.setWindowTit
Qdialog
,当我执行代码时,复选框没有均匀对齐:
但我想这样:
代码如下:
class SelectPay_Dialog2(Qdialog):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(500, 200, 400, 200)
self.setWindowTitle("Window")
label1 = QLabel("test : ")
label2 = QLabel("test : ")
label3 = QLabel("test : ")
#
label1.setFixedSize(80, 20)
label2.setFixedSize(80, 20)
label3.setFixedSize(80, 20)
cb1 = QCheckBox('1week')
cb2 = QCheckBox('2week')
cb3 = QCheckBox('3week')
cb4 = QCheckBox('4week')
cb5 = QCheckBox('5week')
cb6 = QCheckBox('6week')
self.input_date_text1 = QLineEdit()
self.input_date_text2 = QLineEdit()
self.input_date_text1.setFixedSize(100, 25)
self.input_date_text2.setFixedSize(100, 25)
self.input_date_text1.setReadOnly(True)
self.input_date_text2.setReadOnly(True)
layout = QGridLayout()
layout.addWidget(label1, 0, 0)
layout.addWidget(label2, 2, 0)
layout.addWidget(label3, 1, 0)
layout.addWidget(self.input_date_text1, 2, 1)
layout.addWidget(self.input_date_text2, 2, 2)
layout.addWidget(cb1, 1, 1 )
layout.addWidget(cb2, 1, 2 )
layout.addWidget(cb3, 1, 3 )
layout.addWidget(cb4, 1, 4)
layout.addWidget(cb5, 1, 5)
self.setLayout(layout)
在你写的
layout.addWidget(cb1,1,1)
你的括号间距不同于layout.addWidget(cb4,1,4)
使它们都相等,它应该修复它,正如名字所示,QGridLayout将项目放置在一个有行和列的网格中。如果更仔细地查看图像,您将看到前两个复选框与行编辑对齐
如果您不想要这种行为,那么您有不同的选项,所有选项都使用QHBoxLayout:
addRow
李>
以下是将两行编辑视为“默认”布局安排时,您的案例的外观:
checkLayout = QHBoxLayout()
layout.addLayout(checkLayout, 1, 1, 1, 3)
checkLayout.addWidget(cb1)
checkLayout.addWidget(cb2)
checkLayout.addWidget(cb3)
checkLayout.addWidget(cb4)
checkLayout.addWidget(cb5)
注意,我使用了3的列span。这将确保布局占用3列,并且由于只有两列实际占用(通过行编辑),因此剩余空间将仅用于复选框所需的剩余宽度
类似的相关解决方案需要将行编辑添加到它们自己的QHBoxLayout中,但也需要在它们之后使用,以便在它们的右侧保持空白。对于复杂的布局,我建议使用Qt designer。您可以使用
pyuic5
工具将使用它创建的ui
文件转换为python代码
main.py
从PyQt5导入QtWidgets、QtCore
从用户界面选择付款对话框2导入用户界面选择付款对话框2
类SelectPay_对话框2(qtwidts.QDialog):
def uuu init uuu(self,parent=None):
super()。\uuuu init\uuuu(父级)
ui=ui\u选择支付\u对话框2()
ui.setupUi(self)
如果名称=“\uuuuu main\uuuuuuuu”:
app=QtWidgets.QApplication([])
widget=SelectPay\u Dialog2()
widget.show()
app.exec()
Ui\u选择支付对话框2.py
从PyQt5导入QtCore、QtGui、qtwidget
类用户界面\选择付款\对话框2(对象):
def设置界面(自助,选择支付对话框2):
SelectPay_Dialog2.setObjectName(“SelectPay_Dialog2”)
选择Pay_Dialog2。调整大小(432150)
self.gridLayout=qtwidts.QGridLayout(选择Pay_Dialog2)
self.gridLayout.setObjectName(“gridLayout”)
self.label=qtwidts.QLabel(选择支付对话框2)
sizePolicy=qtwidts.QSizePolicy(qtwidts.QSizePolicy.Preferred,qtwidts.QSizePolicy.expansing)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy)
self.label.setObjectName(“标签”)
self.gridLayout.addWidget(self.label,0,0,1,1)
self.label_2=qtwidts.QLabel(选择支付对话框2)
sizePolicy=qtwidts.QSizePolicy(qtwidts.QSizePolicy.Preferred,qtwidts.QSizePolicy.expansing)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
self.label_2.setSizePolicy(sizePolicy)
self.label_2.setObjectName(“label_2”)
self.gridLayout.addWidget(self.label_2,1,0,1,1)
self.horizontalLayout=qtwidts.QHBoxLayout()
self.horizontalLayout.setObjectName(“horizontalLayout”)
self.cb1=qtwidts.QCheckBox(选择支付对话框2)
self.cb1.setObjectName(“cb1”)
self.horizontalLayout.addWidget(self.cb1)
self.cb2=qtwidts.QCheckBox(选择支付对话框2)
self.cb2.setObjectName(“cb2”)
self.horizontalLayout.addWidget(self.cb2)
self.cb3=qtwidts.QCheckBox(选择支付对话框2)
self.cb3.setObjectName(“cb3”)
self.horizontalLayout.addWidget(self.cb3)
self.cb4=qtwidts.QCheckBox(选择支付对话框2)
self.cb4.setObjectName(“cb4”)
self.horizontalLayout.addWidget(self.cb4)
self.cb5=qtwidts.QCheckBox(选择Pay_Dialog2)
self.cb5.setObjectName(“cb5”)
self.horizontalLayout.addWidget(self.cb5)
self.cb6=qtwidts.QCheckBox(选择支付对话框2)
self.cb6.setObjectName(“cb6”)
self.horizontalLayout.addWidget(self.cb6)
self.gridLayout.addLayout(self.horizontalLayout,1,1,1)
self.label_3=qtwidts.QLabel(选择支付对话框2)
sizePolicy=qtwidts.QSizePolicy(qtwidts.QSizePolicy.Preferred,qtwidts.QSizePolicy.expansing)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
self.label_3.setSizePolicy(sizePolicy)
self.label_3.setObjectName(“label_3”)
self.gridLayout.addWidget(self.label_3,2,0,1,1)
self.horizontalLayout_2=qtwidts.QHBoxLayout()
self.horizontalLayout_2.setObjectName(“horizontalLayout_2”)
self.input\u date\u text1=QtWidgets.QLineEdit(选择Pay\u Dialog2)
self.input_date_text1.setObjectName(“input_date_text1”)
self.horizontalLayout\u 2.addWidget(self.input\u date\u text1)
self.input\u date\u text2=QtWidgets.QLineEdit(选择Pay\u Dialog2)
self.input_date_text2.setObjectName(“input_date_text2”)
self.horizontalLayout\u 2.addWidget(self.input\u date\u text2)
SpaceItem=qtwidts.QSpacerItem(40,20,qtwidts.QSizePolicy.expansing,qtwidts.QSizePolicy.Minimum)
自身水平布置图\u 2.附加项(间隔项)
自网格