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

將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)來。
import sys import random
界面編寫函數(shù) init_ui,初始化UI界面及頁面布局代碼塊。
def init_ui(self):
self.setWindowTitle('猜數(shù)字游戲 公眾號:[Python 集中營]')
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('請輸入目標(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('隱藏數(shù)字')
elif self.tar_num_btn.text().strip() == '隱藏數(shù)字':
self.tar_num.setText('#####')
self.tar_num_btn.setText('顯示數(shù)字')
槽函數(shù) in_num_btn_click,用于處理猜數(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('恭喜你,猜對了')
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('請輸入數(shù)字')
最后,通過調(diào)用主題模塊的藍(lán)色主題樣式是整個App變得漂亮。
CandyWindow.createWindow(GuessNumber(), theme='blue', title='猜數(shù)字游戲 公眾號:[Python 集中營]',
ico_path='數(shù)字.ico')完整代碼
# -*- coding:utf-8 -*-
# @author Python 集中營
# @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ù)字游戲 公眾號:[Python 集中營]')
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('請輸入目標(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('隱藏數(shù)字')
elif self.tar_num_btn.text().strip() == '隱藏數(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('恭喜你,猜對了')
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('請輸入數(shù)字')
if __name__ == '__main__':
app = QApplication(sys.argv)
w = CandyWindow.createWindow(GuessNumber(), theme='blue', title='猜數(shù)字游戲 公眾號:[Python 集中營]',
ico_path='數(shù)字.ico')
w.show()
sys.exit(app.exec_())
以上就是基于PyQt5制作一個猜數(shù)字小游戲的詳細(xì)內(nèi)容,更多關(guān)于PyQt5猜數(shù)字游戲的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python使用poplib模塊和smtplib模塊收發(fā)電子郵件的教程
smtplib模塊一般我們比較熟悉、這里我們會來講解使用smtplib發(fā)送SSL/TLS安全郵件的方法,而poplib模塊則負(fù)責(zé)處理接收pop3協(xié)議的郵件,下面我們就來看Python使用poplib模塊和smtplib模塊收發(fā)電子郵件的教程2016-07-07
Numpy中np.max的用法及np.maximum區(qū)別
這篇文章主要介紹了Numpy中np.max的用法及np.maximum區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Python+Selenium+phantomjs實現(xiàn)網(wǎng)頁模擬登錄和截圖功能(windows環(huán)境)
Python是一種跨平臺的計算機(jī)程序設(shè)計語言,它可以運行在Windows、Mac和各種Linux/Unix系統(tǒng)上。這篇文章主要介紹了Python+Selenium+phantomjs實現(xiàn)網(wǎng)頁模擬登錄和截圖功能,需要的朋友可以參考下2019-12-12
DjangoUeditor圖片不顯示img的src沒有域名問題
在使用DjangoUeditor過程中,可能遇到圖片上傳后不顯示問題,解決辦法是修改源碼view.py,加入代碼使得保存的圖片URL帶有協(xié)議和域名,具體做法是在保存圖片代碼中添加request.scheme獲取協(xié)議,request.META['HTTP_HOST']獲取域名2024-09-09
詳解Python中open()函數(shù)指定文件打開方式的用法
well,我們這里所指的文件打開方式并不是指調(diào)用什么應(yīng)用程序去打開某個文件,而是只讀只寫或者二進(jìn)制等的打開方式,這里我們就來詳解Python中open()函數(shù)指定文件打開方式的用法2016-06-06

