将 QtCreator 中的 Qt 对象放入 Python 列表中
Put Qt objects from QtCreator into a Python list
我有一个内置于 QtCreator 中的 QtWidget。假设在名为 Edit0
到 Edit9
的小部件中有 10 个 QLineEdits。应该放入其中的数据存储在 Python 列表 data
中。有没有办法将这 10 个 QLineEdits 放在 Python 列表中,这样我基本上可以分配它们的值,例如:
for index in range(len(data)):
Edit[index].setText('{:.2}'.format(data[index]))
由于您使用的是 python,您可以通过字符串访问字段:
for index in range(len(data)):
getattr(ui, f"Edit{index}").setText('{:.2}'.format(data[index]))
但靠名字是一种丑陋的作风
您还可以迭代包含编辑内容的布局。
Here是C++中的做法,方法名与python相同。
但是如果你想在布局中添加其他东西,例如按钮,那会变得很难看。
这两种方法都不能扩展。
如果你有很多固定模式的编辑,你应该考虑用你的代码自己创建它们,并首先把它们放在一个列表中。
edits = []
for index in range(42):
edit = QLineEdit()
edits.append(edit)
ui.some_layout.addWidget(edit) # add edit to the layout
# later:
for edit, data in zip(edits, data):
edit.setText('{:.2}'.format(data[index]))
但是,在我看来,您正在构建 table。
你知道 QListWidget
、QTableWidget
、QListView
和 QTableView
吗?
我有一个内置于 QtCreator 中的 QtWidget。假设在名为 Edit0
到 Edit9
的小部件中有 10 个 QLineEdits。应该放入其中的数据存储在 Python 列表 data
中。有没有办法将这 10 个 QLineEdits 放在 Python 列表中,这样我基本上可以分配它们的值,例如:
for index in range(len(data)):
Edit[index].setText('{:.2}'.format(data[index]))
由于您使用的是 python,您可以通过字符串访问字段:
for index in range(len(data)):
getattr(ui, f"Edit{index}").setText('{:.2}'.format(data[index]))
但靠名字是一种丑陋的作风
您还可以迭代包含编辑内容的布局。 Here是C++中的做法,方法名与python相同。 但是如果你想在布局中添加其他东西,例如按钮,那会变得很难看。
这两种方法都不能扩展。 如果你有很多固定模式的编辑,你应该考虑用你的代码自己创建它们,并首先把它们放在一个列表中。
edits = []
for index in range(42):
edit = QLineEdit()
edits.append(edit)
ui.some_layout.addWidget(edit) # add edit to the layout
# later:
for edit, data in zip(edits, data):
edit.setText('{:.2}'.format(data[index]))
但是,在我看来,您正在构建 table。
你知道 QListWidget
、QTableWidget
、QListView
和 QTableView
吗?