用python实现一个GUI抽奖脚本

Tkinter 介绍

Tkinter 是 Python 的标准 GUI 库。Python 使用 Tkinter 可以快速的创建 GUI 应用程序。

由于 Tkinter 是内置到 python 的安装包中、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如。

所用组件

Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。
(脚本所用到的组件)
Button: 按钮控件;在程序中显示按钮。
Label: 标签控件;可以显示文本和位图

涉及代码

1.先创建一个空界面

from tkinter import *
root = Tk()
# 界面题目
root.title(f"小可爱")
#界面大小
root.geometry('400x300')

root.mainloop()

在这里插入图片描述

2.给空界面加上配置好的 label 和 button

from tkinter import *
import random
root = Tk()
# 界面题目
root.title(f"小可爱")
#界面大小
root.geometry('400x300')

value_label = Label(root ,text='1111111111', font = '仿宋 19 normal')
value_label.pack(pady = 15,fill = BOTH,expand = True)

history_label = Label(root ,text = '获奖号码展示', font = '楷体 9 normal', wraplength = 400)
history_label.pack(side = BOTTOM,pady = 15)

do_button = Button(root, text = '开始', font = '仿宋 9 normal', width = 20,cursor = 'hand2')
do_button.pack(side = BOTTOM, pady = 15)

root.mainloop()

在这里插入图片描述

3.在button上绑定点击函数do_click

from tkinter import *
import random

is_scroll = False

def do_click():
	# 按钮的开始与停止逻辑
	global is_scroll
	is_scroll = not is_scroll
	button_text = "停止" if is_scroll else "开始"
	do_button.config(text = button_text)
	#调用抽奖函数
	if is_scroll:
		run_counter()


def run_counter():
	pass



root = Tk()
# 界面题目
root.title(f"小可爱")
#界面大小
root.geometry('400x300')

value_label = Label(root ,text='1111111111', font = '仿宋 19 normal')
value_label.pack(pady = 15,fill = BOTH,expand = True)

history_label = Label(root ,text = '获奖号码展示', font = '楷体 9 normal', wraplength = 400)
history_label.pack(side = BOTTOM,pady = 15)

do_button = Button(root, text = '开始', font = '仿宋 9 normal', width = 20,cursor = 'hand2',command = do_click)
do_button.pack(side = BOTTOM, pady = 15)

root.mainloop()

4.将value_label和history_label的text变量改为可变变量

from tkinter import *
import random

is_scroll = False

def do_click():
	# 按钮的开始与停止逻辑
	global is_scroll
	is_scroll = not is_scroll
	button_text = "停止" if is_scroll else "开始"
	do_button.config(text = button_text)
	#调用抽奖函数
	if is_scroll:
		run_counter()


def run_counter():
	pass


root = Tk()
# 界面题目
root.title(f"小可爱")
#界面大小
root.geometry('400x300')

#可变变量
value_var = StringVar()
#设置一个初始值
value_var.set('点击开始进入抽奖')
history_var = StringVar()


value_label = Label(root ,textvariable = value_var, font = '仿宋 19 normal')
value_label.pack(pady = 15,fill = BOTH,expand = True)

history_label = Label(root ,textvariable=history_var, font = '楷体 9 normal', wraplength = 400)
history_label.pack(side = BOTTOM,pady = 15)

do_button = Button(root, text = '开始', font = '仿宋 9 normal', width = 20,cursor = 'hand2',command = do_click)
do_button.pack(side = BOTTOM, pady = 15)

root.mainloop()

在这里插入图片描述

5.从本地文件phones.txt中获得手机号,然后写抽奖函数,即可实现功能(完整代码)
在这里插入图片描述

from tkinter import *
import random

is_scroll = False

def do_click():
	# 按钮的开始与停止逻辑
	global is_scroll
	is_scroll = not is_scroll
	button_text = "停止" if is_scroll else "开始"
	do_button.config(text = button_text)
	#调用抽奖函数
	if is_scroll:
		run_counter()


def run_counter():
	def counter():
		global phones,is_scroll
		if is_scroll:
			#label中的配置
			value_label.config(foreground = 'black')
			# 从phones列表中随机获取一个元素
			value_var.set(random.choice(phones))
			# 100毫秒刷新一次
			root.after(100, counter)
		else:
			#label中的配置
			value_label.config(foreground = 'red')
			#中奖处理
			#移除中奖号码
			lucky_phone = value_var.get()
			phones.remove(lucky_phone)
			#写入中奖列表
			#如果history_var有值,s就是中奖结果,否则s为空
			s = '中奖结果:\n' if not history_var.get() else history_var.get()
			# 将抽到的号码写到history_var变量中
			history_var.set(s + ' ' + lucky_phone)

			value_var.set(f'恭喜{lucky_phone}中奖')
	counter()




with open('phones.txt','r') as f:
	phones = f.readlines()
#左右去掉\n字符
phones = [x.strip('\n') for x in phones]
# print(phones)



root = Tk()
# 界面题目
root.title(f"小可爱")
#界面大小
root.geometry('400x300')

#可变变量
value_var = StringVar()
#设置一个初始值
value_var.set('点击开始进入抽奖')
history_var = StringVar()


value_label = Label(root ,textvariable = value_var, font = '仿宋 19 normal')
value_label.pack(pady = 15,fill = BOTH,expand = True)

history_label = Label(root ,textvariable=history_var, font = '楷体 9 normal', wraplength = 400)
history_label.pack(side = BOTTOM,pady = 15)

do_button = Button(root, text = '开始', font = '仿宋 9 normal', width = 20,cursor = 'hand2',command = do_click)
do_button.pack(side = BOTTOM, pady = 15)

root.mainloop()

学习Python最主要的还是要动手,去找一些自己感兴趣的脚本,代码去练习,练的越多,对于一些英语单词,特殊符号要比死记硬背要容易记得些。最后附上视频教程链接,b站一位很厉害的师傅。
视频教程地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值