【问题标题】:Display data from list in label Python在标签 Python 中显示列表中的数据
【发布时间】:2020-04-21 04:36:10
【问题描述】:

我有一个数据列表,但列表的大小不固定。我想在标签(Textview)中显示此列表的每个项目。

        self.valueT.append(value) 
        for i in self.valueT:
            // print(i)
            self.result.setText(i)

在此代码中,在控制台中显示所有内容的print(i) 工作意味着它会显示结果,但是当我执行self.result.setText(i) 时,这个不起作用意味着它没有在标签中显示任何内容。第二件事我想在 1 秒后显示每个值。 self.valueT 是一个列表

【问题讨论】:

标签: python python-3.x pyqt pyqt5 qlabel


【解决方案1】:

for 循环运行得如此之快,以至于我们缓慢的大脑无法识别它,因此您看不到文本。每 T 秒执行一次的想法有助于这不是问题,但您不必使用 for 循环,而是使用 QTimer 和迭代器编写它,也就是说,它与迭代的逻辑相同,但使用计时器事件:

import sys

from PyQt5 import QtCore, QtGui, QtWidgets


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)

        self.label = QtWidgets.QLabel(alignment=QtCore.Qt.AlignCenter)
        self.setCentralWidget(self.label)

        self.resize(640, 480)

        listT = list("ABCDEFGHIJKLMNOPQRSTUVWXYZ")

        self.listT_iterator = iter(listT)

        self.timer = QtCore.QTimer(timeout=self.on_timeout, interval=1000)
        self.timer.start()

        self.on_timeout()

    @QtCore.pyqtSlot()
    def on_timeout(self):
        try:
            value = next(self.listT_iterator)
            self.label.setText(value)
        except StopIteration:
            self.timer.stop()


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

【讨论】:

  • 这就是我想要的。但我还有一些问题。我修改问题你会不会回头看问题
  • @OsamaBillah 1) 花时间理解我的代码。 2) 分析你的代码是否与我的相似,例如我没有看到“listT_iterator” 3) 很遗憾,我们不会解决学校作业,因为那是你的工作
猜你喜欢
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多