|
发表于 2024-5-1 08:03:48
|
显示全部楼层
这是一个简单的抽奖小程序。你可以使用tkinter库来创建GUI界面,通过Listbox、Entry和Button等控件来实现添加、删除和抽奖的功能。
在这个程序中,抽奖列表是用Listbox控件实现的,你可以使用add()函数向列表中添加抽奖选项。例如,在添加按钮的回调函数add()中,获取输入框中的文本,并使用insert()方法将其添加到choice_list中。
删除功能有两种方式:一种是按照索引删除,另一种是选中项删除。在删除按钮的回调函数delete_to_index()中,首先判断输入的索引是否在范围内,如果是则使用delete()方法删除对应索引的选项。在删除选中项的回调函数delete_insert()中,先判断是否有选中项,然后遍历选中项,使用delete()方法删除对应索引的选项。
抽奖功能是通过choice()函数实现的,先获取choice_list中的所有选项,然后从中随机选择一个选项,并显示在text控件中。
下面是完整代码示例:
- import tkinter as tk
- import random
- from tkinter import messagebox
- root = tk.Tk()
- left = tk.LabelFrame(root, text='抽奖列表', font=("微软雅黑", 13))
- left.pack(side=tk.LEFT, padx=10, pady=10)
- right = tk.LabelFrame(root, text='列表选项', font=("微软雅黑", 13))
- right.pack(side=tk.RIGHT, padx=10, pady=10)
- # 抽取函数
- def choice():
- lists = choice_list.get(0, tk.END)
- if len(lists) != 0:
- text.config(state=tk.NORMAL)
- text.delete(1.0, tk.END)
- text.insert(tk.END, str(random.choice(lists)))
- text.config(state=tk.DISABLED)
- # 添加函数
- def add(event=None):
- if add_text.get() != '':
- choice_list.insert(tk.END, add_text.get())
- else:
- messagebox.showwarning(title='错误', message="添加失败:输入栏为空!")
- # 删除函数
- def delete_to_index(event=None):
- try:
- if delete_index.get() < 1 or delete_index.get() > choice_list.size() - 1:
- choice_list.delete(delete_index.get() - 1)
- else:
- messagebox.showerror(title='错误', message="删除失败:超出索引范围!")
- except tk.TclError:
- messagebox.showerror(title='错误', message="删除失败:类型错误!")
- def delete_insert(event=None):
- if len(choice_list.curselection()) == 0:
- messagebox.showerror(title='错误', message="删除失败:没有选中项!")
- else:
- for i in choice_list.curselection():
- choice_list.delete(i)
- # 左边
- # 滚动条
- scroll = tk.Scrollbar(left)
- scroll.pack(side=tk.RIGHT, fill=tk.Y)
- # 列表框
- choice_list = tk.Listbox(left, yscrollcommand=scroll.set, selectmode=tk.MULTIPLE)
- choice_list.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
- choice_list.bind("<<ListboxSelect>>", delete_insert) # 绑定事件
- # 同步滚动条
- scroll.config(command=choice_list.yview)
- # 右边
- add_text = tk.StringVar()
- delete_index = tk.IntVar()
- # 添加按钮
- tk.Button(right, text='添加', command=add, font=("微软雅黑", 13)).grid(row=0, padx=10, pady=5)
- # 添加输入框
- e1 = tk.Entry(right, textvariable=add_text, font=("微软雅黑", 13))
- e1.grid(row=0, column=1, padx=10, pady=5)
- e1.bind("<Return>", add) # 绑定回车事件
- # 删除按钮
- tk.Button(right, text='删除', command=delete_to_index, font=("微软雅黑", 13)).grid(row=1, padx=10, pady=5)
- # 删除输入框
- e2 = tk.Entry(right, textvariable=delete_index, font=("微软雅黑", 13))
- e2.grid(row=1, column=1, padx=10, pady=5)
- e2.bind("<Return>", delete_insert) # 绑定回车事件
- # 抽取按钮
- tk.Button(right, text='抽奖', command=choice, font=("微软雅黑", 13)).grid(row=2, padx=10, pady=5)
- # 显示抽奖结果
- tk.Label(right, text='你抽到了', font=("微软雅黑", 13)).grid(row=3, padx=10, pady=5)
- text = tk.Text(right, font=("微软雅黑", 13), state=tk.DISABLED, width=20, height=1.3)
- text.grid(row=3, column=1, padx=10, pady=5)
- root.mainloop()
复制代码
希望这个代码可以帮助到你,如果还有其他问题,请随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|