直接上代码:
import tkinter as tk
import random as rd
import tkinter.messagebox as tm
import sys
font_family = ""
font_size = ""
names = []
names_old = []
text = "惊喜点名"
is_passed = False
root = tk.Tk()
def light_copy(list1, list2):
while len(list2) > 0:
list2.pop()
for i in list1:
list2.append(i)
def open_file(file: str):
global names
try:
with open(file, "r", encoding="utf-8") as f_obj:
names = str(f_obj.read()).split("\n")
except (FileNotFoundError, Exception):
tm.showerror("错误", "文件出现问题")
sys.exit()
for i in names:
if i == '':
names.remove(i)
elif len(i) < 4:
index = names.index(i)
names.remove(i)
if len(i) == 3:
i = " " * int((5 - len(i)) // 2) + i + " " * (5 - len(i) - int((4 - len(i)) // 2))
elif len(i) == 2:
i = " " * int((5 - len(i)) // 2 + 1) + i + " " * (5 - len(i) - int((4 - len(i)) // 2)+1)
names.insert(index, i)
light_copy(names, names_old)
# print(names)
def cmd(btn):
if len(names) <= len(names_old) // 5:
light_copy(names_old, names)
global is_passed, text
if is_passed:
names.remove(text)
is_passed = False
btn.config(fg="green")
return
else:
btn.config(fg="black")
is_passed = True
while is_passed:
text = rd.choice(names)
btn.config(text=text)
btn.update()
root.update()
def moue_leave(master):
master.attributes('-alpha', 0.1)
def mouse_enter(master):
master.attributes('-alpha', 1)
def init():
global font_family, font_size
font_family = "黑体"
font_size = 250
root.iconbitmap("icon.ico")
root.attributes('-topmost', 'true')
root.bind("<Enter>", lambda events: mouse_enter(root))
root.bind("<Leave>", lambda events: moue_leave(root))
open_file("names.txt")
def guis():
btn_name = tk.Button(root, text=text, font=("黑体", 250), command=lambda: cmd(btn_name), relief=tk.GROOVE)
btn_name.pack(fill=tk.BOTH, expand=tk.YES)
root.title("惊喜点名器-制作:伟大天才cgy")
root.resizable(False, False)
if __name__ == '__main__':
init()
guis()
root.mainloop()