基于PyQt5制作一個(gè)猜數(shù)字小游戲
開始之前,直接來(lái)看一下實(shí)現(xiàn)后的效果。想自己實(shí)現(xiàn)或者需要源碼的童鞋直接進(jìn)場(chǎng)...

將PyQt5的相關(guān)模塊直接導(dǎo)入即可。
from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import *
為了照顧一下新關(guān)注的童鞋,這里介紹一下PyQt5的安裝,還是采用pip的安裝方式。
pip install PyQt5
將準(zhǔn)備好的樣式導(dǎo)入到代碼塊中。
# 主題樣式模塊引用 from QCandyUi import CandyWindow
文件和隨機(jī)數(shù)相關(guān)的模塊導(dǎo)入進(jìn)來(lái)。
import sys import random
界面編寫函數(shù) init_ui,初始化UI界面及頁(yè)面布局代碼塊。
def init_ui(self):
self.setWindowTitle('猜數(shù)字游戲 公眾號(hào):[Python 集中營(yíng)]')
self.setWindowIcon(QIcon('數(shù)字.ico'))
self.setFixedSize(500, 350)
self.msg = QLabel()
self.msg.setText('猜數(shù)字游戲')
self.msg.setStyleSheet(
'font-size:50px;text-align:center;font-weight:bold;font-family:"Microsoft JhengHei";')
self.msg.setAlignment(Qt.AlignCenter)
self.in_num = QLineEdit()
self.in_num.setPlaceholderText('請(qǐng)輸入目標(biāo)數(shù)字')
self.in_num.setAlignment(Qt.AlignCenter)
self.in_num_btn = QPushButton()
self.in_num_btn.setText('就是它了')
self.in_num_btn.clicked.connect(self.in_num_btn_click)
self.tar_num_btn = QPushButton()
self.tar_num_btn.setText('顯示數(shù)字')
self.tar_num_btn.clicked.connect(self.tar_num_btn_click)
self.tar_num = QLabel()
self.tar_num.setText('#####')
self.tar_num.setFixedWidth(50)
self.generate_num_btn = QPushButton()
self.generate_num_btn.setText(' 生成目標(biāo)數(shù)字 ')
self.generate_num_btn.clicked.connect(self.generate_num_btn_click)
hbox = QHBoxLayout()
hbox.addWidget(self.tar_num)
hbox.addWidget(self.tar_num_btn)
hbox.addStretch(1)
hbox.addWidget(self.generate_num_btn)
vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addWidget(self.msg)
vbox.addWidget(self.in_num)
vbox.addWidget(self.in_num_btn)
vbox.addStretch(1)
vbox.addLayout(hbox)
self.setLayout(vbox)
槽函數(shù) generate_num_btn_click,用于生成猜數(shù)字游戲的目標(biāo)數(shù)字。
def generate_num_btn_click(self):
tar_num = random.randint(1, 99)
self.num = tar_num
# 重置最大最小值
self.max_num = 100 # 當(dāng)前最大值
self.min_num = 0 # 當(dāng)前最小值
槽函數(shù) tar_num_btn_click,用于顯示或隱藏目標(biāo)數(shù)字。
def tar_num_btn_click(self):
if self.num != 0 and self.tar_num_btn.text().strip() == '顯示數(shù)字':
self.tar_num.setText(str(self.num))
self.tar_num_btn.setText('隱藏?cái)?shù)字')
elif self.tar_num_btn.text().strip() == '隱藏?cái)?shù)字':
self.tar_num.setText('#####')
self.tar_num_btn.setText('顯示數(shù)字')
槽函數(shù) in_num_btn_click,用于處理猜數(shù)字實(shí)現(xiàn)的主要代碼邏輯。
def in_num_btn_click(self):
try:
in_num = int(self.in_num.text().strip())
if in_num < self.min_num or in_num >= self.max_num:
pass
else:
if self.num == 0:
self.msg.setText('沒有目標(biāo)數(shù)字')
elif in_num == self.num:
self.msg.setText('恭喜你,猜對(duì)了')
else:
if in_num < self.num:
self.msg.setText(str(in_num) + ' - ' + str(self.max_num))
self.min_num = in_num
elif in_num > self.num:
self.msg.setText(str(self.min_num) + ' - ' + str(in_num))
self.max_num = in_num
except:
self.msg.setText('請(qǐng)輸入數(shù)字')
最后,通過(guò)調(diào)用主題模塊的藍(lán)色主題樣式是整個(gè)App變得漂亮。
CandyWindow.createWindow(GuessNumber(), theme='blue', title='猜數(shù)字游戲 公眾號(hào):[Python 集中營(yíng)]',
ico_path='數(shù)字.ico')完整代碼
# -*- coding:utf-8 -*-
# @author Python 集中營(yíng)
# @date 2022/2/10
# @file test1.py
# done
# GUI猜數(shù)字游戲
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
# 主題樣式模塊引用
from QCandyUi import CandyWindow
import sys
import random
class GuessNumber(QWidget):
def __init__(self):
super(GuessNumber, self).__init__()
self.num = 0 # 目標(biāo)數(shù)字
self.max_num = 100 # 當(dāng)前最大值
self.min_num = 0 # 當(dāng)前最小值
self.init_ui()
def init_ui(self):
self.setWindowTitle('猜數(shù)字游戲 公眾號(hào):[Python 集中營(yíng)]')
self.setWindowIcon(QIcon('數(shù)字.ico'))
self.setFixedSize(500, 350)
self.msg = QLabel()
self.msg.setText('猜數(shù)字游戲')
self.msg.setStyleSheet(
'font-size:50px;text-align:center;font-weight:bold;font-family:"Microsoft JhengHei";')
self.msg.setAlignment(Qt.AlignCenter)
self.in_num = QLineEdit()
self.in_num.setPlaceholderText('請(qǐng)輸入目標(biāo)數(shù)字')
self.in_num.setAlignment(Qt.AlignCenter)
self.in_num_btn = QPushButton()
self.in_num_btn.setText('就是它了')
self.in_num_btn.clicked.connect(self.in_num_btn_click)
self.tar_num_btn = QPushButton()
self.tar_num_btn.setText('顯示數(shù)字')
self.tar_num_btn.clicked.connect(self.tar_num_btn_click)
self.tar_num = QLabel()
self.tar_num.setText('#####')
self.tar_num.setFixedWidth(50)
self.generate_num_btn = QPushButton()
self.generate_num_btn.setText(' 生成目標(biāo)數(shù)字 ')
self.generate_num_btn.clicked.connect(self.generate_num_btn_click)
hbox = QHBoxLayout()
hbox.addWidget(self.tar_num)
hbox.addWidget(self.tar_num_btn)
hbox.addStretch(1)
hbox.addWidget(self.generate_num_btn)
vbox = QVBoxLayout()
vbox.addStretch(1)
vbox.addWidget(self.msg)
vbox.addWidget(self.in_num)
vbox.addWidget(self.in_num_btn)
vbox.addStretch(1)
vbox.addLayout(hbox)
self.setLayout(vbox)
def generate_num_btn_click(self):
tar_num = random.randint(1, 99)
self.num = tar_num
# 重置最大最小值
self.max_num = 100 # 當(dāng)前最大值
self.min_num = 0 # 當(dāng)前最小值
def tar_num_btn_click(self):
if self.num != 0 and self.tar_num_btn.text().strip() == '顯示數(shù)字':
self.tar_num.setText(str(self.num))
self.tar_num_btn.setText('隱藏?cái)?shù)字')
elif self.tar_num_btn.text().strip() == '隱藏?cái)?shù)字':
self.tar_num.setText('#####')
self.tar_num_btn.setText('顯示數(shù)字')
def in_num_btn_click(self):
try:
in_num = int(self.in_num.text().strip())
if in_num < self.min_num or in_num >= self.max_num:
pass
else:
if self.num == 0:
self.msg.setText('沒有目標(biāo)數(shù)字')
elif in_num == self.num:
self.msg.setText('恭喜你,猜對(duì)了')
else:
if in_num < self.num:
self.msg.setText(str(in_num) + ' - ' + str(self.max_num))
self.min_num = in_num
elif in_num > self.num:
self.msg.setText(str(self.min_num) + ' - ' + str(in_num))
self.max_num = in_num
except:
self.msg.setText('請(qǐng)輸入數(shù)字')
if __name__ == '__main__':
app = QApplication(sys.argv)
w = CandyWindow.createWindow(GuessNumber(), theme='blue', title='猜數(shù)字游戲 公眾號(hào):[Python 集中營(yíng)]',
ico_path='數(shù)字.ico')
w.show()
sys.exit(app.exec_())
以上就是基于PyQt5制作一個(gè)猜數(shù)字小游戲的詳細(xì)內(nèi)容,更多關(guān)于PyQt5猜數(shù)字游戲的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)圖片灰度化以及圖片顯示的兩種方法
這篇文章給大家介紹了Python實(shí)現(xiàn)圖片,灰度化以及圖片顯示的兩種方法并通過(guò)代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),需要的朋友可以參考下2024-02-02
讓代碼變得更易維護(hù)的7個(gè)Python庫(kù)
今天小編就為大家分享一篇關(guān)于讓代碼變得更易維護(hù)的7個(gè)Python庫(kù),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10
使用IPython來(lái)操作Docker容器的入門指引
這篇文章主要介紹了使用IPython來(lái)操作Docker容器的方法,包括一些基本的搭建和連接,主要依靠docker-py模塊,需要的朋友可以參考下2015-04-04
解決Opencv+Python cv2.imshow閃退問(wèn)題
這篇文章主要介紹了解決Opencv+Python cv2.imshow閃退問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04
用Python實(shí)現(xiàn)web端用戶登錄和注冊(cè)功能的教程
這篇文章主要介紹了用Python實(shí)現(xiàn)web端用戶登錄和注冊(cè)功能的教程,需要的朋友可以參考下2015-04-04
關(guān)于Python字符編碼與二進(jìn)制不得不說(shuō)的一些事
這篇文章主要給大家介紹了關(guān)于Python字符編碼與二進(jìn)制不得不說(shuō)的一些事,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

