在标签 Python 中显示列表中的数据
Display data from list in label Python
我有一个数据列表,但列表的大小不固定。我想在标签(文本视图)中显示此列表的每个项目。
self.valueT.append(value)
for i in self.valueT:
// print(i)
self.result.setText(i)
在此代码中,print(i)
在控制台中显示所有内容的工作意味着它显示结果但是当我这样做时 self.result.setText(i)
这个不起作用意味着它没有在标签中显示任何内容.第二件事我想在 1 秒后显示每个值。 self.valueT
是一个列表
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_())
我有一个数据列表,但列表的大小不固定。我想在标签(文本视图)中显示此列表的每个项目。
self.valueT.append(value)
for i in self.valueT:
// print(i)
self.result.setText(i)
在此代码中,print(i)
在控制台中显示所有内容的工作意味着它显示结果但是当我这样做时 self.result.setText(i)
这个不起作用意味着它没有在标签中显示任何内容.第二件事我想在 1 秒后显示每个值。 self.valueT
是一个列表
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_())