from PySide import QtCore
from PySide import QtGui
class UI(QtGui.QDialog):
def __init__(self):
super(UI,self).__init__()
self.setWindowTitle('My UI Title')
self.create_layout()
def create_layout(self):
mainLayout = QtGui.QGridLayout()
radioButtonSetALayout = QtGui.QVBoxLayout()
radioButtonSetBLayout = QtGui.QVBoxLayout()
#radio button set A
setALabel = QtGui.QLabel('Fruit')
radioButtonA = QtGui.QRadioButton('Apple')
radioButtonB = QtGui.QRadioButton('Pear')
radioButtonSetALayout.addWidget(setALabel)
radioButtonSetALayout.addWidget(radioButtonA)
radioButtonSetALayout.addWidget(radioButtonB)
#radio button set B
setBLabel = QtGui.QLabel('Junk')
radioButtonC = QtGui.QRadioButton('Pizza')
radioButtonD = QtGui.QRadioButton('Donut')
radioButtonE = QtGui.QRadioButton('Ice Cream')
radioButtonSetBLayout.addWidget(setBLabel)
radioButtonSetBLayout.addWidget(radioButtonC)
radioButtonSetBLayout.addWidget(radioButtonD)
radioButtonSetBLayout.addWidget(radioButtonE)
#alignment
radioButtonSetALayout.setAlignment(QtCore.Qt.AlignTop)
radioButtonSetBLayout.setAlignment(QtCore.Qt.AlignTop)
#add sub layouts to main layout
mainLayout.addLayout(radioButtonSetALayout,0,0)
mainLayout.addLayout(radioButtonSetBLayout,0,1)
self.setLayout(mainLayout)
if __name__ == '__main__':
try:
ui.close()
except:
pass
ui = UI()
ui.setAttribute(QtCore.Qt.WA_DeleteOnClose)
ui.show()
我在一个QGridLayout中有两个QVBoxLayout并排,每个qradiobutton的数量不同。默认情况下,我的两组qradiobutton不会很好地对齐,因为QVBoxLayout的默认行为是将小部件添加到中心对齐。在
我认为通过设置QVBoxLayout的对齐方式可以解决这个问题,但它似乎并没有改变任何东西。在
我的另一个想法是在没有QRadiobutton的列中添加某种看不见的“间隔符”,以匹配另一列中的数量,试图使它们均匀,但从我的尝试来看,这并不十分精确。在
^{} 有第四个(可选)参数
alignment
。在因此,与其设置
QVBoxLayout
s的对齐方式,不如在添加布局时进行设置。在相关问题 更多 >
编程相关推荐