PySimpleGUI猜数字游戏开发求助:类与GUI实现问题
猜数字游戏实现方案
直接给你一个能运行的面向过程版本(避开类和self,新手更容易理解),包含你要的所有功能:
import PySimpleGUI as sg import random def init_game(): """初始化游戏:生成第一个1-12的随机数,清空结果提示""" return random.randint(1, 12), "" # 设置GUI主题 sg.theme('LightBlue2') # 初始化游戏状态 current_num, result_text = init_game() # 构建GUI布局 layout = [ [sg.Text(f"当前数字: {current_num}", key='-CURRENT_NUM-', font=('Arial', 16))], [sg.Radio('大', 'GUESS', key='-BIG-', default=True), sg.Radio('小', 'GUESS', key='-SMALL-')], [sg.Text(result_text, key='-RESULT-', font=('Arial', 14), text_color='red')], [sg.Button('提交猜测'), sg.Button('重新开始'), sg.Button('退出')] ] # 创建窗口 window = sg.Window('猜数字游戏', layout) # 事件循环(处理用户操作的核心) while True: event, values = window.read() # 退出游戏 if event == sg.WIN_CLOSED or event == '退出': break # 重新开始游戏 if event == '重新开始': current_num, result_text = init_game() window['-CURRENT_NUM-'].update(f"当前数字: {current_num}") window['-RESULT-'].update(result_text) window['-BIG-'].update(value=True) # 默认选中"大"选项 continue # 处理猜测提交 if event == '提交猜测': # 生成下一个随机数 next_num = random.randint(1, 12) # 获取用户选择的猜测方向 user_guess_big = values['-BIG-'] # 判断猜测是否正确 correct = False if user_guess_big and next_num > current_num: correct = True elif not user_guess_big and next_num < current_num: correct = True # 更新结果提示 result_text = f"下一个数字: {next_num} → {'猜对了!' if correct else '猜错了!'}" window['-RESULT-'].update(result_text) # 更新当前数字,准备下一轮猜测 current_num = next_num window['-CURRENT_NUM-'].update(f"当前数字: {current_num}") # 关闭窗口 window.close()
关键部分说明
- 初始化函数:
init_game用来重置游戏状态,每次重新开始时调用,避免重复写相同代码 - GUI元素的
key:给每个需要动态更新的元素加key,方便后续用window[key].update()修改内容 - 事件循环:PySimpleGUI的核心逻辑,所有用户操作(点击按钮、关闭窗口)都在这里处理:
- 退出:直接结束循环关闭窗口
- 重新开始:调用初始化函数,把界面上的数字、提示、单选框都重置回初始状态
- 提交猜测:生成新数字、判断对错、更新结果,同时把当前数字替换成新数字,继续下一轮
运行步骤
- 先安装PySimpleGUI:命令行输入
pip install pysimplegui - 把代码保存为
.py文件,直接运行即可
这个版本逻辑简单,没有用到类和self,你可以跟着注释一步步理解每部分的作用,也能直接修改测试。
内容的提问来源于stack exchange,提问作者kal_amari
相关产品推荐
相关产品推荐

