python - PyQT5:如何在表单行中将按钮与行编辑对齐?
问题描述
我正在尝试创建一个将生成我所有小部件的类。目前,我被卡住了,因为我想让我的行编辑与按钮对齐(典型的是你在文件上传窗口中看到的),但按钮在下一行。我如何排列它们?
生成表单小部件的类:
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)
提前致谢。
解决方案
您可以将QLineEdit
andQButton
放在 aQHBoxLayout
中,并将其添加到您的表单布局中,例如
lineEdit = QLineEdit()
fieldType.setText("Browse")
hlayout = QHBoxLayout()
hlayout.addWidget(lineEdit)
hlayout.addWidget(fieldType)
layout.addRow(label, hlayout)
推荐阅读
- spring-boot - ByteBuddy,使用 javaagent bytebuddy 修改 Sleuth SpanCustomizer
- javascript - 是否可以使用 HTML、CSS 和 JavaScript 动态重复元素?
- azure - wwwroot 并不总是在 Azure Webapp 上更新
- git - git误删了,怎么恢复?
- flutter - 未处理的异常:SocketException:主机查找失败:URL(操作系统错误:没有与主机名关联的地址,errno = 7)
- android - android studio RecyclerView 宽度
- javascript - 我可以在 express 的同一个 api 端点中有一个 res.json 和 res.sendFile 吗?
- kubernetes - Rancher Kubernetes 证书支持哪些椭圆曲线?
- c# - 使用 VSTO 更改形状的动画效果设置
- python - 错误:DQN 期望模型对每个动作都有一个维度