我正在尝试创建一个将生成所有小部件的类。目前,我很困,因为我想使行编辑与按钮对齐(通常是在文件上传窗口中看到的内容),但是按钮在下一行中。如何排列它们?
生成表单窗口小部件的类:
class CreateFormElements(QtWidgets.QWidget):
def __init__(self, *args, **kwargs):
super(CreateFormElements, self).__init__(*args, **kwargs)
def create_form_row(self, label, fieldType, *args, **kwargs):
layout = QFormLayout()
# this arguments will tell me if I want a button, and if the button should open a file window
connectType = kwargs.get('connectType', None)
_fieldType = kwargs.get('_fieldType', None)
# if this is a button that should open up a file window, call the create_file_window() function to make a
# file window. currently no button is visible and the file window is opening up directly.
if connectType == 'file' and _fieldType == 'button':
filePath = layout.addWidget(QLineEdit())
fieldType.setText("Browse")
fieldType.clicked.connect(create_file_window)
layout.addRow(QLabel(label), fieldType)
self.setLayout(layout)
主窗口:
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.myWindow()
def myWindow(self):
self.setWindowTitle("My Awesome App")
sizeObject = QtWidgets.QDesktopWidget().screenGeometry(-1)
print(" Screen size : " + str(sizeObject.height()) + "x" + str(sizeObject.width()))
self.width = 600
self.height = 480
self.left = 0
self.top = 0
self.setGeometry(self.left, self.top, self.width, self.height)
layout = QVBoxLayout()
elm = CreateFormElements()
elm.create_form_row("Object Name: ", QPushButton(), connectType='file', _fieldType='button')
layout.addWidget(elm)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
谢谢。
答案 0 :(得分:1)
您可以将QLineEdit
和QButton
放在QHBoxLayout
中,然后将其添加到表单布局中,例如
lineEdit = QLineEdit()
fieldType.setText("Browse")
hlayout = QHBoxLayout()
hlayout.addWidget(lineEdit)
hlayout.addWidget(fieldType)
layout.addRow(label, hlayout)