用Python弄一个随机点名起要求:1.需要显示出被点到的名字2.界面需要有个按钮,点击一次更新被点到的名字3.退出后下次登录上次点过的忍让有保存病可以继续往下点名4.每一轮必须把名字点完在进行下一轮新的点名
时间: 2024-05-13 11:13:54 浏览: 53
关于python pyqt5模块的一个随机点名.zip
5星 · 资源好评率100%
好的,可以使用Python的Tkinter库来实现这个随机点名的程序。以下是一个简单的实现:
```python
import tkinter as tk
import random
class RandomNamePicker:
def __init__(self):
self.window = tk.Tk()
self.window.title("随机点名程序")
# 读取已保存的名字列表
self.names = []
try:
with open("names.txt", "r") as f:
self.names = f.read().splitlines()
except FileNotFoundError:
pass
# 显示被点到的名字的标签
self.name_label = tk.Label(self.window, text="", font=("Arial", 24))
self.name_label.pack(pady=20)
# 点名按钮
self.pick_button = tk.Button(self.window, text="点名", command=self.pick_name)
self.pick_button.pack(pady=10)
# 保存名字列表和已点过的名字
self.current_index = -1
self.history = []
self.round = 0
# 启动程序
self.window.mainloop()
def pick_name(self):
if len(self.names) == 0:
self.name_label.config(text="名字列表为空!")
elif self.current_index == -1:
# 每轮开始前打乱名字列表
self.round += 1
self.history = []
random.shuffle(self.names)
self.current_index = 0
self.name_label.config(text=self.names[self.current_index])
self.save_state()
elif self.current_index < len(self.names) - 1:
# 显示下一个名字
self.current_index += 1
self.name_label.config(text=self.names[self.current_index])
self.save_state()
else:
# 一轮结束
self.current_index = -1
self.name_label.config(text="第{}轮点名结束!".format(self.round))
self.save_state()
def save_state(self):
# 保存已点过的名字和名字列表
if self.current_index != -1:
self.history.append(self.names[self.current_index])
with open("names.txt", "w") as f:
f.write("\n".join(self.names))
with open("history.txt", "a") as f:
f.write("Round {}: {}\n".format(self.round, ", ".join(self.history)))
if __name__ == "__main__":
RandomNamePicker()
```
这个程序将名字列表保存在一个文本文件中,已点过的名字和每轮的历史记录也保存在另一个文本文件中。每次启动程序时,程序会读取之前保存的状态。
阅读全文