Python PyQT5 的骰子滚子

Dice Roller with Python PyQT5

如何使用随机数设置图像我的意思是如果出现 1 则将加载 1dot 图像。请给我一个 solution.It 生成数字和加载图像但我不知道如何为每次按下滚动时它会根据随机数 1 到 6 更改图像的逻辑。

import random
import sys
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import (QApplication,QMainWindow, QPushButton,QTextEdit,QLabel,QFileDialog)
class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setFixedSize(400,400)
        self.setWindowTitle("Simple Dice roller")
        
        self.button = QPushButton('Roll', self) #button connection
        self.button.clicked.connect(self.clickmethod) #methodclicked button  connection
        self.button.clicked.connect(self.imageview) # buttonimageview connection
        self.msg =  QTextEdit(self) #for showing text while clicking on button in box
        
        self.msg.resize(100,32)
        self.msg.move(100,100)
        
        self.button.resize(100,32)
        self.button.move(50,50)
        self.imageview()
       
    def clickmethod(self):
        ran = str(random.randint(1,6))
        self.msg.setText(ran)

    def imageview(self):
        label = QLabel(self)
        label.move(100, 110)
        label.setFixedSize(500, 300)
        pixmap = QPixmap(r'S:\Dice sumilator\diceimagedot.jpg')
        #pixmap = QPixmap(r'S:\Dice sumilator\diceimagedots.jpg')
        label.setPixmap(pixmap)
                        
if __name__ == "__main__":    
    app = QApplication(sys.argv)
    Diceroll = MainWindow()
    Diceroll.show()
    sys.exit(app.exec_()) 

这里是 cheap/easy 使用 QGraphicScene Widget 完成这项工作的方法。 它创建一个区域来显示图像并根据 if 语句更新它。

更新:删除了我同行的错误陈述。

import random
import sys
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import (QApplication, QMainWindow, QPushButton, QTextEdit, QGraphicsScene, QGraphicsPixmapItem, QGraphicsView)


class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setFixedSize(400, 400)
        self.setWindowTitle("Simple Dice roller")

        self.button = QPushButton('Roll', self)  # button connection
        self.button.clicked.connect(self.clickmethod)  # methodclicked button  connection
        self.msg = QTextEdit(self)  # for showing text while clicking on button in box

        self.msg.resize(100, 32)
        self.msg.move(100, 100)

        self.button.resize(100, 32)
        self.button.move(50, 50)

        self.graphicsView = QGraphicsView(self)

        self.scene = QGraphicsScene()
        self.pixmap = QGraphicsPixmapItem()
        self.scene.addItem(self.pixmap)
        self.graphicsView.setScene(self.scene)
        self.graphicsView.resize(100, 100)
        self.graphicsView.move(200, 200)

    def clickmethod(self):
        ran = str(random.randint(1, 6))
        self.msg.setText(ran)
        if ran == '1':
            print(ran)
            img = QPixmap('dice1.png')
            self.pixmap.setPixmap(img)
        elif ran == '2':
            print(ran)
            img = QPixmap('dice2.png')
            self.pixmap.setPixmap(img)


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

他们在 中指出的内容是不正确的,在这种情况下,QGraphicsPixmapItem 和 QLabel 具有相同的容量,因为它们都用于显示 QPixmap。什么时候遇到困难或其他错误注释的事情在这里没有区别。

如果您想随机选择图像,那么您必须创建一个图像列表并使用 random.choices 随机获取图像并更新 QLabel 显示的 QPixmap:

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setFixedSize(400, 400)
        self.setWindowTitle("Simple Dice roller")

        self.button = QPushButton("Roll", self)
        self.button.clicked.connect(self.clickmethod)
        self.msg = QTextEdit(self)

        self.msg.resize(100, 32)
        self.msg.move(100, 100)

        self.button.resize(100, 32)
        self.button.move(50, 50)
        self.label = QLabel(self)
        self.label.move(100, 110)
        self.label.setFixedSize(500, 300)

    def clickmethod(self):
        images = [
            r"S:\Dice sumilator\diceimagedot.jpg",
            r"S:\Dice sumilator\diceimagedots.jpg",
        ]
        random_image = random.choices(images)
        pixmap = QPixmap(random_image)
        self.label.setPixmap(pixmap)