PyQT5:如何在窗体行中使用行编辑来排列按钮?

2024-06-26 10:48:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个类来生成我所有的小部件。目前,我卡住了,因为我想让我的行编辑行与按钮(典型的是你看到的文件上传窗口),但按钮是在下一行。我该如何排列它们

类生成窗体小部件:

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)

提前谢谢


Tags: andselfifinitdefcreateargsbutton
1条回答
网友
1楼 · 发布于 2024-06-26 10:48:09

您可以将QLineEditQButton放在QHBoxLayout中,并将其添加到表单布局中,例如

lineEdit = QLineEdit()
fieldType.setText("Browse")

hlayout = QHBoxLayout()
hlayout.addWidget(lineEdit)
hlayout.addWidget(fieldType)

layout.addRow(label, hlayout)

相关问题 更多 >