抽签小游戏:Python-Tkinter

python 同时被 3 个专栏收录
3 篇文章 1 订阅
1 篇文章 0 订阅
1 篇文章 0 订阅

抽签小游戏:使用python的Tkinter库实现。

python3自带的库–Tkinter

用到Tkinter的控件的说明和参数:

在这里插入图片描述
程序按钮的摆放顺序以及坐标图:
在这里插入图片描述
源代码:

# 导入tkinter模块
import tkinter as tk
import threading
from time import sleep
from random import randint
from tkinter import messagebox

# 创建窗口对象
window = tk.Tk()
window.title('抽签')
# 窗口大小
window.minsize(800, 600)
# 将学生姓名放入列表中
name_list = ['同学1', '同学2', '同学3', '同学4', '同学5', '同学6',
             '同学7', '同学8', '同学9', '同学10', '同学11', '同学12',
             '同学13', '同学14', '同学15', '同学16', '同学17', '同学18']
# 创建一个空列表,用来放置做好的按钮
btn_list = []
# 循环遍历学生列表的长度
for i in range(len(name_list)):
	# 设置按钮,传入学生姓名作为按钮上显示的文本,设置字体,设置按钮颜色为白色
    button = tk.Button(window, text=name_list[i], font=('SimSun 15 bold'), bg='white')
    # 将按钮添加入按钮列表
    btn_list.append(button)
    # 按行摆放按钮,因为每行摆放6个,所以对6进行取商和余数。
    # 根据每行摆放按钮数量不同可以更改
    y, x = divmod(i, 6)
    # 放置按钮,位置会随着i的值变化,依次摆放
    button.place(x=100+x*100, y=100+y*100, width=80, height=80)


def round():
    # 点击按钮后,判断按钮显示的文本,然后换成相反的
    if btn_start['text'] == '开始':
        btn_start['text'] = '停止'
    else:
    	# 如果点击按钮时,显示的文本是‘停止’,就会跳出函数。
        btn_start['text'] = '开始'
        return
    # 设置按钮列表的长度,也就是学生数量
    m = len(btn_list)
    # 随机生成i的值,i将会作为按钮列表的索引值
    # 也就是点击开始按钮时会随机开始
    i = randint(0, m-1)
    while True:
        # 遍历所有的按钮,将所有的组件背景变为白色
        for x in btn_list:
            x['bg'] = 'white'
        # 将当前数值对应的组件的背景颜色设置成红色,表示选中的状态
        btn_list[i]['bg'] = 'red'
        # 判断按钮显示的文本是否是‘开始’,
        # 因为只有点击停止按钮时显示文本才会变成‘开始’,弹窗出现,跳出循环
        if btn_start['text'] == '开始':
        	# 设置弹窗,使用showinfo函数展示中奖信息
            tk.messagebox.showinfo('中奖', message='恭喜{}成为幸运儿'.format(btn_list[i]['text']))
            # 新建一个窗口达到弹窗的效果,可以设置字体大小和窗口大小
            # 有需要的可以使用这部分代码
            # popup = tk.Tk()
            # popup.title('中奖')
            # text = '恭喜{}成为幸运儿'.format(btn_list[i]['text'])
            # msg = tk.Label(popup, text=text, font=('SimSun 15 bold'), width=30, height=5)
            # # 布局函数pack
            # msg.pack(side=tk.LEFT)
            # popup.mainloop()
            break
        # 重新将i赋值一个随机坐标,目的是为了让抽签时每次都是随机选中按钮的
        i = randint(0, m-1)
        # 延时,可以更改时间控制速度
        sleep(0.05)


# 创建线程的函数
def newtask():
    # 创建线程并运行,target传入开始抽签的函数
    t = threading.Thread(target=round)
    t.start()


# 设置开始按钮,commond传入点击按钮时执行的函数
btn_start = tk.Button(window, text='开始', font=('SimSun 15 bold'), command=newtask)
# 放置开始按钮
btn_start.place(x=300, y=450, width=200, height=80)
# 事件循环,保持窗口不会关闭
window.mainloop()

运行:

在这里插入图片描述
点击开始按钮:按钮显示的文本变成停止,随机选中学生
在这里插入图片描述
点击停止按钮:弹出抽签信息。
在这里插入图片描述

  • 2
    点赞
  • 2
    评论
  • 20
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值