将 QtCreator 中的 Qt 对象放入 Python 列表中

Posted

技术标签:

【中文标题】将 QtCreator 中的 Qt 对象放入 Python 列表中【英文标题】:Put Qt objects from QtCreator into a Python list 【发布时间】:2020-03-31 06:46:07 【问题描述】:

我有一个内置于 QtCreator 的 QtWidget。假设在名为 Edit0Edit9 的小部件中有 10 个 QLineEdit。应该放入其中的数据存储在 Python 列表data 中。有没有办法将这 10 个 QLineEdits 放在 Python 列表中,这样我基本上可以分配它们的值,例如:

for index in range(len(data)):
    Edit[index].setText(':.2'.format(data[index]))

【问题讨论】:

【参考方案1】:

由于您使用的是python,因此您可以通过字符串访问字段:

for index in range(len(data)):
    getattr(ui, f"Editindex").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]))

但是,在我看来,您正在构建一张桌子。 你知道QListWidgetQTableWidgetQListViewQTableView吗?

【讨论】:

以上是关于将 QtCreator 中的 Qt 对象放入 Python 列表中的主要内容,如果未能解决你的问题,请参考以下文章

QTCreator+Python

qt creator和qt的区别

Qt中的OpengL glDrawBuffers()?

在 Qt Creator 中包含 Python

如何使用Qt插件在Qt中进行ROS开发

如何将 Windows SDK 与 Qt Creator 一起使用