import random
import tkinter.font
import tkinter.ttk
def readfile(path):
with open(path,mode='r',encoding='utf-8') as f:
names=f.readlines()
namelist=[]
for name in names:
namelist.append(name)
return namelist
class Appication():
def __init__(self):
self.root =tkinter.Tk()
self.root.geometry('400x150')
self.root.resizable(False, False)
self.run=False
self.root.title("滚动抽奖")
self.name = tkinter.StringVar()
self.namelist = readfile('namelist.txt')#读取抽奖名单,须建立该名单,否则无法抽奖
self.luckynamelist = []
ft = tkinter.font.Font(family='楷书', size=40)
tkinter.Entry(self.root, textvariable=self.name, width=13, font=ft,justify='center',state='readonly',).place(x=25, y=25)
tkinter.Button(self.root, text='开始', command=self.roll_start,relief=tkinter.GROOVE,fg="white",bg="black").place(x=50, y=100)
tkinter.Button(self.root, text='结束', command=self.rool_end,relief=tkinter.GROOVE,fg="white",bg="black").place(x=150, y=100)
only = tkinter.StringVar()
tkinter.Label(self.root, text="允许重复:").place(x=200, y=100)
self.onlyChosen = tkinter.ttk.Combobox(self.root, width=12, textvariable=only, state='readonly')
self.onlyChosen['values'] = ('no-repeat', 'repeat') # 设置下拉列表的值
self.onlyChosen.place(x=260, y=100) # 设置其在界面中出现的位置 column代表列 row 代表行
self.onlyChosen.current(0) # 设置下拉列表默认显示的值,0为 numberChosen['values'] 的下标值
self.root.mainloop()
def roll(self):
if len(self.namelist)==0:
self.name.set('EmptyNameList!')
return
selectname = random.choice(self.namelist)
self.name.set(selectname)
if self.run:
self.root.after(50, self.roll)
else:
self.deletename(self.name.get())
def roll_start(self):
if self.run:
return
self.run = True
self.roll()
def rool_end(self):
if self.run:
self.run = False
def deletename(self,luckyname):
self.luckynamelist.append(luckyname)
# print('1',self.luckynamelist)
if self.onlyChosen.get()=='no-repeat':
self.namelist.remove(luckyname)
# print('2',self.namelist)
if __name__ == '__main__':
app = Appication()
python tk实现简单的滚动抽奖
最新推荐文章于 2024-08-03 22:27:18 发布