python tk实现简单的滚动抽奖

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()

实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值