我是python的新手,我真的希望得到一些帮助。
我正在尝试为自动槽车圈计数/计时器创建一个应用程序。 比赛开始前我需要一些倒计时,我正在使用QLabel。
我希望使用' update_label()'更新此内容。功能,但它似乎不起作用。
我做错了什么?
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys, time
from PyQt5.QtWidgets import QWidget, QPushButton, QLabel, QLineEdit, QGridLayout, QApplication, QLCDNumber, QSlider
from PyQt5.QtCore import QCoreApplication, Qt
class race(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
lane1 = QLabel('READY?')
grid = QGridLayout()
grid.setSpacing(10)
grid.addWidget(lane1, 1, 0, 1, 1)
self.setLayout(grid)
self.setGeometry(400, 300, 600, 300)
self.setWindowTitle('Race')
self.showMaximized()
self.update_label()
def update_label(self):
count = 3
while count>1:
time.sleep(1)
counter = count
Label = self.lane1.setText(counter)
timer = QtCore.QTimer()
timer.timeout.connect(Label)
timer.start(10000)
count = count - 1
if __name__ == '__main__':
raceApp = QApplication(sys.argv)
racePanel = race()
sys.exit(raceApp.exec_())
但是抛出了这个错误:
Traceback (most recent call last):
File "./race.py", line 58, in <module>
racePanel = race()
File "./race.py", line 16, in __init__
self.initUI()
File "./race.py", line 35, in initUI
self.update_label()
File "./race.py", line 45, in update_label
Label = self.lane1.setText(counter)
AttributeError: 'race' object has no attribute 'lane1'
答案 0 :(得分:0)
先生,您的代码是一团糟hahaha ..发生此错误是因为您在下面的方法中没有此标签,应将其声明为“self”。所以这将是全球性的,你可以访问它。
在你定义事物的方式中还有许多其他奇怪的事情。
有一些提示:
反正,
尝试这样的事情。我做了一些修改......
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys, time
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QWidget, QLabel, QGridLayout, QApplication
class race(QWidget):
lane1 = None
timer = None
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.lane1 = QLabel('READY?')
self.timer = QTimer()
self.grid = QGridLayout()
self.grid.setSpacing(10)
self.grid.addWidget(self.lane1, 1, 0, 1, 1)
self.setLayout(self.grid)
self.setGeometry(400, 300, 600, 300)
self.setWindowTitle('Race')
self.showMaximized()
self.update_label()
def update_label(self):
self.timer.start(99999999)
self.timer.setInterval(999999)
self.lane1.setText(str(self.timer.remainingTime()))
def paintEvent(self, q_painter_event):
self.lane1.setText(str(self.timer.remainingTime()))
super(race, self).paintEvent(q_painter_event)
if __name__ == '__main__':
raceApp = QApplication(sys.argv)
racePanel = race()
sys.exit(raceApp.exec_())
你必须适应你想要的:p