首页 > 解决方案 > 如何在 PyQt5 中动态创建标签

问题描述

我正在创建一个使用 PyQt5 实现D'hontds方法的基本 GUI 应用程序,并且在动态创建时遇到问题,Qlbales即我想在这些标签中显示结果,并且标签的数量基于用户输入的数量,因此它会有所不同. 我可以创建最大数量,然后只使用我需要的数量,但我确信有更整洁和更有效的解决方案。

我尝试过execand eval(我知道这是一种糟糕的方法),但是我没有成功。我认为eval无法以某种方式从列表中读取元素,不确定。这是我尝试过的(i+5因为我还有 4 个标签):

def set_result_labels(self):

        font = QtGui.QFont()
        font.setPointSize(15)
        for i in range(len(self.text_parties_names)):
            exec(f"self.label_{i+5} = QtWidgets.QLabel(self.centralwidget)")
            eval(f"self.label_{i+5}.setGeometry(QtCore.QRect(640, {(i+5)*40}, 50, 50))")
            eval(f"self.label_{i+5}.setFont(font)")
            eval(f"self.label_{i+5}.setText(self.text_parties_names[i])") 

并且self.text_partirs_names是来自textEdits(用户输入)的名称列表:

def get_parties_names(self):
        for text_edit in self.text_edit_parties_list:
            if text_edit.toPlainText():
                self.text_parties_names.append(text_edit.toPlainText())

标签: python-3.xpyqt5

解决方案


推荐阅读