python随机点名UI程序代码
时间: 2025-05-08 15:32:25 浏览: 21
### Python Tkinter 随机点名 GUI 程序示例
#### 1. 导入所需库
为了创建一个简单的随机点名程序,首先需要导入 `tkinter` 和 `random` 库。
```python
import tkinter as tk
from random import choice
```
#### 2. 创建主窗口
定义主应用程序类并初始化主窗口设置。
```python
class RandomNamePickerApp:
def __init__(self, root):
root.title("随机点名器") # 设置窗口标题
frame = tk.Frame(root)
frame.pack(padx=10, pady=10)
label = tk.Label(frame, text="点击按钮随机抽取学生", font=("Arial", 14))
label.grid(row=0, columnspan=2, pady=(0, 10))
self.name_label = tk.Label(frame, text="", width=20, height=3, bg='white', relief=tk.SUNKEN, font=("Arial", 18))
self.name_label.grid(row=1, columnspan=2, padx=5, pady=5)
pick_button = tk.Button(frame, text="随机抽选", command=self.pick_random_name, width=15, height=2, font=("Arial", 12), fg='blue')
pick_button.grid(row=2, column=0, sticky=tk.W+tk.E, pady=(10, 0))
reset_button = tk.Button(frame, text="重置名单", command=self.reset_names, width=15, height=2, font=("Arial", 12), fg='red')
reset_button.grid(row=2, column=1, sticky=tk.W+tk.E, pady=(10, 0))
names_input_label = tk.Label(frame, text="输入名字(每行一个): ", font=("Arial", 12))
names_input_label.grid(row=3, column=0, sticky=tk.W, pady=(10, 0))
self.names_textbox = tk.Text(frame, wrap=tk.WORD, width=30, height=7, font=("Arial", 12))
self.names_textbox.grid(row=4, columnspan=2, padx=5, pady=5)
save_button = tk.Button(frame, text="保存名单", command=self.save_names, width=15, height=2, font=("Arial", 12), fg='green')
save_button.grid(row=5, columnspan=2, pady=(10, 0))
load_button = tk.Button(frame, text="加载名单", command=self.load_names, width=15, height=2, font=("Arial", 12), fg='purple')
load_button.grid(row=6, columnspan=2, pady=(10, 0))
quit_button = tk.Button(frame, text="退出", command=root.quit, width=15, height=2, font=("Arial", 12), fg='black')
quit_button.grid(row=7, columnspan=2, pady=(10, 0))
self.names_list = []
def pick_random_name(self):
if not self.names_list:
self.name_label.config(text="无可用的名字")
return
selected_name = choice(self.names_list)
self.name_label.config(text=f"{selected_name}")
def reset_names(self):
self.names_list.clear()
self.name_label.config(text="")
def save_names(self):
input_names = self.names_textbox.get('1.0', 'end').strip().split('\n')
filtered_names = list(filter(None, (name.strip() for name in input_names)))
self.names_list.extend(filtered_names)
self.names_textbox.delete('1.0', 'end') # 清空文本框
def load_names(self):
with open('names.txt', mode='r', encoding='utf-8') as file:
lines = file.readlines()
loaded_names = [line.strip() for line in lines]
self.names_list.extend(loaded_names)
if __name__ == "__main__":
app_window = tk.Tk()
app = RandomNamePickerApp(app_window)
app_window.mainloop()
```
这段代码展示了如何构建一个基本的Tkinter应用来实现随机点名的功能[^1]。通过使用 `.after()` 方法可以进一步优化用户体验,确保界面响应迅速而不被长时间的操作所阻塞[^2]。此外,还可以扩展此程序以支持更多的文件格式或更复杂的逻辑处理[^3]。
阅读全文
相关推荐


















