如何更新 PyQt5 中的 QLabel?
How do I update a QLabel in PyQt5?
import random
import sys
from PyQt5.QtCore import (Qt)
from PyQt5.QtWidgets import (QHBoxLayout, QToolTip, QPushButton, QApplication, QWidget, QLabel)
from PyQt5.QtGui import (QIcon, QPixmap, QFont)
class dicesimulator(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
QToolTip.setFont(QFont('SansSerif', 10))
dice = QLabel(self)
smaller_pixmap = QPixmap('dice ' + str(random.randint(1,6)) +'.png').scaled(160, 300, Qt.KeepAspectRatio, Qt.FastTransformation)
dice.setPixmap(smaller_pixmap)
dice.move(1, 1)
btn = QPushButton('Roll', self)
btn.setFont(QFont('SansSerif', 20))
btn.setToolTip('Click to Roll Die')
btn.clicked.connect(self.rolldice)
btn.resize(162, 40)
btn.move(0, 161)
self.setGeometry(1427, 30, 162, 201)
self.setFixedSize(self.size())
self.setWindowTitle('Dice Simulator')
self.setWindowIcon(QIcon('icon.png'))
self.show()
def rolldice(self):
new_dice = QPixmap('dice ' + str(random.randint(1,6)) + '.png').scaled(160, 300, Qt.KeepAspectRatio, Qt.FastTransformation)
dice.setPixmap(new_dice)
QApplication.processEvents()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = dicesimulator()
ex.show()
sys.exit(app.exec_())
我正在尝试在 32 位 Windows 7 机器上使用 PyQt5 和 Python 3.5 创建一个骰子滚动模拟器。我遇到的问题是,当单击 'Roll' 按钮时,我无法更新 QLabel/QPixmap 以显示不同的随机骰子图像。单击 'Roll' 按钮时,我收到 'Python has stopped working' 错误消息并且程序关闭。一段时间以来,我一直在尝试解决这个问题,根据我所阅读的所有内容,我当前的代码应该可以工作,但它没有。
您需要创建对自身的引用,
self.dice = QLabel(self)
...
def rolldice(self):
new_dice = QPixmap('dice ' + str(random.randint(1,6)) + '.png').scaled(160, 300, Qt.KeepAspectRatio, Qt.FastTransformation)
self.dice.setPixmap(new_dice)
QApplication.processEvents()
import random
import sys
from PyQt5.QtCore import (Qt)
from PyQt5.QtWidgets import (QHBoxLayout, QToolTip, QPushButton, QApplication, QWidget, QLabel)
from PyQt5.QtGui import (QIcon, QPixmap, QFont)
class dicesimulator(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
QToolTip.setFont(QFont('SansSerif', 10))
dice = QLabel(self)
smaller_pixmap = QPixmap('dice ' + str(random.randint(1,6)) +'.png').scaled(160, 300, Qt.KeepAspectRatio, Qt.FastTransformation)
dice.setPixmap(smaller_pixmap)
dice.move(1, 1)
btn = QPushButton('Roll', self)
btn.setFont(QFont('SansSerif', 20))
btn.setToolTip('Click to Roll Die')
btn.clicked.connect(self.rolldice)
btn.resize(162, 40)
btn.move(0, 161)
self.setGeometry(1427, 30, 162, 201)
self.setFixedSize(self.size())
self.setWindowTitle('Dice Simulator')
self.setWindowIcon(QIcon('icon.png'))
self.show()
def rolldice(self):
new_dice = QPixmap('dice ' + str(random.randint(1,6)) + '.png').scaled(160, 300, Qt.KeepAspectRatio, Qt.FastTransformation)
dice.setPixmap(new_dice)
QApplication.processEvents()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = dicesimulator()
ex.show()
sys.exit(app.exec_())
我正在尝试在 32 位 Windows 7 机器上使用 PyQt5 和 Python 3.5 创建一个骰子滚动模拟器。我遇到的问题是,当单击 'Roll' 按钮时,我无法更新 QLabel/QPixmap 以显示不同的随机骰子图像。单击 'Roll' 按钮时,我收到 'Python has stopped working' 错误消息并且程序关闭。一段时间以来,我一直在尝试解决这个问题,根据我所阅读的所有内容,我当前的代码应该可以工作,但它没有。
您需要创建对自身的引用,
self.dice = QLabel(self)
...
def rolldice(self):
new_dice = QPixmap('dice ' + str(random.randint(1,6)) + '.png').scaled(160, 300, Qt.KeepAspectRatio, Qt.FastTransformation)
self.dice.setPixmap(new_dice)
QApplication.processEvents()