用python编写一个图形界面抽奖程序,随机产生9组两位数,还有一位是随机的大写字母,点击开始按钮,数据开始滚动,点击停止,数据停止滚动
时间: 2024-03-20 09:44:25 浏览: 51
详解用python写一个抽奖程序
好的,以下是一个简单的Python Tkinter图形界面抽奖程序,其中使用了random库来随机产生两位数和大写字母,使用了Tkinter的Canvas和Text控件来展示抽奖结果,使用了Tkinter的Button控件来实现开始和停止按钮:
```python
import random
import string
import tkinter as tk
class LotteryProgram:
def __init__(self, master):
self.master = master
self.master.title("抽奖程序")
self.master.geometry("400x300")
self.is_running = False
self.result = []
self.letters = string.ascii_uppercase
self.canvas = tk.Canvas(self.master, width=300, height=100)
self.canvas.pack()
self.text = self.canvas.create_text(150, 50, text="", font=("Arial", 30))
self.start_button = tk.Button(self.master, text="开始", command=self.start_lottery)
self.stop_button = tk.Button(self.master, text="停止", command=self.stop_lottery, state="disabled")
self.start_button.pack(side=tk.LEFT, padx=50)
self.stop_button.pack(side=tk.RIGHT, padx=50)
def start_lottery(self):
self.is_running = True
self.start_button.config(state="disabled")
self.stop_button.config(state="normal")
self.result = []
self.draw_lottery()
def stop_lottery(self):
self.is_running = False
self.start_button.config(state="normal")
self.stop_button.config(state="disabled")
def draw_lottery(self):
if self.is_running:
self.result = [random.randint(10, 99) for i in range(9)]
self.result.append(random.choice(self.letters))
self.canvas.itemconfigure(self.text, text="{} {} {} {} {} {} {} {} {} {}".format(*self.result))
self.master.after(100, self.draw_lottery)
root = tk.Tk()
app = LotteryProgram(root)
root.mainloop()
```
在程序中,我们首先定义了一个LotteryProgram类来实现程序的主要逻辑。在初始化函数__init__中,我们设置了窗口的标题和大小,并定义了一些必要的变量,包括is_running表示抽奖是否正在进行,result表示抽奖结果,letters表示随机大写字母的备选集合。然后,我们创建了一个Tkinter的Canvas控件和一个Text控件,用于展示抽奖结果。接着,我们创建了开始和停止按钮,并将它们放置在窗口中。
在start_lottery函数中,我们将is_running设置为True,将开始按钮禁用,将停止按钮启用,将result清空,然后调用draw_lottery函数开始抽奖。在draw_lottery函数中,我们首先判断是否正在进行抽奖,如果是,则使用random库来随机产生9个两位数和一个大写字母,将结果存储在result列表中,并使用canvas.itemconfigure方法将结果更新到Text控件中。这里使用了Python的字符串格式化方法来将结果转换成字符串并展示出来。最后,我们使用master.after方法来实现动态滚动,每隔100毫秒重新调用draw_lottery函数。
在stop_lottery函数中,我们将is_running设置为False,将开始按钮启用,将停止按钮禁用,从而停止抽奖过程。
运行程序后,点击开始按钮,即可开始抽奖,抽奖结果会在Text控件中动态滚动展示,点击停止按钮即可停止抽奖。
阅读全文