1. 程式人生 > >[python]pyqt5實現的剪刀石頭布

[python]pyqt5實現的剪刀石頭布

先說下,這個十分簡陋的,很多功能都是沒有像我想的那樣實現的,所以說,希望能看見這篇文章的大佬給予幫助

首先,我需要兩個QLabel來顯示圖片,為了能夠知道正在顯示的是哪一張圖片,我選擇重新定義類,繼承自QLabel,增加了資料成員count(用來判斷顯示的圖片是哪一張),並且重新定義了滑鼠點選事件,如下

class Computer(QLabel):
    def __init__(self,p=None):
        super(Computer,self).__init__(p)
        self.count=0
    def mousePressEvent(self, QMouseEvent):
        self.count=self.count+1
        if self.count>2:
            self.count=self.count-3
        if self.count==0:
            p = QPixmap('剪刀.png')
            self.setPixmap(p)
        elif self.count==1:
            p = QPixmap('石頭.jpg')
            self.setPixmap(p)
        else:
            p = QPixmap('布.jpg')
            self.setPixmap(p)
        self.able = 1
    def now(self):
        return self.count
    def setcount(self,c):
        self.count=c

然後是主頁面,由於不知道如何隨著介面大小調整QLabel,於是我只好固定大小,這裡說一下臨時變數的使用,如果沒有一個臨時變數可能沒法使水平佈局與垂直佈局結合起來,臨時變數的的使用大致如下

up = QVBoxLayout() 
t1 = QWidget()#定義一個臨時變數完成垂直佈局與水平佈局的融合
hbox = QHBoxLayout()
t1.setLayout(hbox)
up.addWidget(t1)
self.setLayout(up)

還有QLabel顯示圖片的問題,我的圖片是存在資料夾下的所以是用的是相對路徑

self.lb1.setScaledContents(True) #這個函式可以使圖片適應標籤的大小

將按鈕與相應的事件進行連線

self.bt1.clicked.connect(self.left) #left是我定義的那個函式

具體的程式碼在最後有一個網盤地址,python3.6

之後列一些問題請教一下

1. 我想做個介面轉化怎麼做,就是初始介面你點start介面會跳轉的那種

2.QLabel可不可以實現圖片的放映,就相當於一直在動那種,我知道他能夠顯示gif但是我想它在沒操作之前不斷顯示我的那三張圖片

3.可不可以通過點選圖片來使主介面再進行一次judge()(這個具體可以看一下程式碼,一個小彩蛋)

提取碼:0z8s