我正在使用PySide6制作一个数据库编辑器。我制作了一个QPushButton,在QFormLayout中添加了两行。 See screenshot 1
看起来不错吧?这就是单击“添加另一列”之前的情况。 但是我点击了一下,并没有再做两行,而是把它们移到了最后 See screenshot 2
这是我的密码:
def addTableForm(self):
def addColumnForm():
layout.addRow(columnNameLabel, columnName)
layout.addRow(columnTypeLabel, columnType)
layout = QFormLayout(self)
widget = QWidget(self)
tableNameLabel = QLabel(parent=self, text="Enter the table name")
tableName = QLineEdit(parent=self)
columnNameLabel = QLabel(parent=self, text="Add a column")
columnName = QLineEdit(parent=self)
columnTypeLabel = QLabel(parent=self, text="Enter the type of the column")
columnType = QLineEdit(parent=self)
moreColumnsLabel = QLabel(parent=self, text="Add another column")
moreColumns = QPushButton(parent=self, text="Add another column", clicked=addColumnForm)
moreColumns.setFixedWidth(200)
cancel = QPushButton(self, text="Cancel", clicked=self.selectTables)
confirm = QPushButton(self, text="Confirm")
layout.addRow(tableNameLabel, tableName)
addColumnForm()
layout.addRow(moreColumnsLabel, moreColumns)
layout.addRow(cancel, confirm)
widget.setLayout(layout)
self.setCentralWidget(widget)
该函数位于一个MainWindow类中,继承了QMainWindow。 你能帮帮我吗?顺便问一下,你能给我一些造型技巧吗?我不喜欢所有小部件都挤在一起的方式
谢谢
小部件是唯一的实例,如果您再次尝试将它们添加到布局中,它们不会被“复制”。
事实上,您并没有添加新的小部件,您只是告诉布局使用给定的小部件添加一行,因为这些小部件已经在布局中,结果是它们被删除,并添加到“新”行中,从而导致它们发生移动
您需要的是动态创建新的小部件,并且由于您可能需要它们的内容,所以您应该保留它们的引用
一种可能的实施方式如下:
一些注意事项:
self
是QMainWindow(不支持设置布局),则不应使用QFormLayout(self)
,因为QLayout构造函数的小部件参数是将在其上设置布局的小部件;您应该使用将用作中心小部件的小部件李>相关问题 更多 >
编程相关推荐