文本颜色会随着时间变化而变化,喜欢其他颜色的自己可以调整colors = ['red', 'green', 'blue', 'yellow', 'orange', 'purple', 'pink', 'cyan', 'magenta', 'lime', 'teal', 'navy', 'aqua', 'maroon', 'olive', 'silver', 'gray', 'black', 'white', '#FFC0CB']中的颜色的值,随机选的
#我还在整理其他的tkinter库的内容,之后等我在做几个例子,我熟练后会发的(本人菜鸟),如有问题希望大佬纠正,感谢
import os import openpyxl from stu_int import iom from tkinter import messagebox import tkinter as tk #目标读取学生学号,姓名,按照学号来抽奖 #奖品为随机罚抄1到10遍 #思路:按照指定路径放excel文件(这里是桌面上的学生表) # 首先读取excel学生名单,(其他的也可以,但是要使用的人自己修改路径) # 然后随机选抽, #最后压缩为exe文件(这里没有压缩) # 我的开源项目不压缩的哦!!! # 构建桌面路径 desktop_path = os.path.join(os.path.expanduser("~"), 'Desktop') # 指定 Excel 文件的名称 excel_file = '学生表.xlsx' # 构建完整的文件路径 file_path = os.path.join(desktop_path, excel_file) # 使用 os.startfile 打开文件 if os.path.exists(file_path): #读取excel文件 wb = openpyxl.load_workbook(file_path) sheet1=wb['Sheet1'] list2=[]#存放姓名 #读取其他列也可以:将以第二列为例,min_col=2, max_col=2即可,其他类比 # 获取第三列的数据 for row in sheet1.iter_rows(min_row=1, max_row=sheet1.max_row, min_col=3, max_col=3): for cell in row: list2.append(cell.value) iom(list2[5:])#第二个是stu_int,加了记录时间的装饰器 else: root = tk.Tk() root.withdraw() # 隐藏主窗口 lb = tk.Label(root) messagebox.showinfo( title="信息提示", message="桌面上没有学生表", icon=messagebox.INFO ) lb.config(text="显示了信息提示")
#这里是要和上面的文件放到一起的python文件,命名为 stu_int方便,毕竟我不习惯一个文件中代码太多,其实也可以定义类写,但是我懒得动脑子了
# 引入库 import tkinter as tk import random def iom(ksp): root = tk.Tk() # 给窗口添加文字 root.title('奖励') #这顶窗口背景色 root.configure(background='white') # 设置窗口大小和位置 root.geometry("500x500+300+100") #放进去text文本 (幸运儿) #设置label控件的大小 label=tk.Label(root) # 设置标签的宽度和高度 label.configure(width=400, height=320) #加上文本 label.configure(text="幸运数字") # 更改标签本身的背景颜色 label.configure(bg="white") def change_text_color(label): """改变标签文字的颜色,并安排下一次颜色更改的时间""" colors = ['red', 'green', 'blue', 'yellow', 'orange', 'purple', 'pink', 'cyan', 'magenta', 'lime', 'teal', 'navy', 'aqua', 'maroon', 'olive', 'silver', 'gray', 'black', 'white', '#FFC0CB'] color = random.choice(colors) label.config(fg=color) # 改变颜色 stime=[500,750,1000,1250,1500,1750,2000] Ti_me=random.choice(stime) root.after(Ti_me, change_text_color, label) # 安排下一秒再次调用此函数 # 更改文本的颜色 change_text_color(label) # 使用 place 布局管理器 label.place( anchor='n' , relx=0.5, rely=0.16 # 控件相对于父容器的相对位置x=0,y=0 , relwidth=0.8, relheight=0.21 ) #绑定输入的列表,从列表中随机抽一个点到名的人的(labal的字体) label1 = tk.Label(root) # 更改标签本身的背景颜色 label1.configure(bg="white") #加上边框和边框颜色 label1.configure(borderwidth=3,relief='solid') # 更改文本 label1.configure(text='') # 更改文本的颜色 label1.configure(fg="red") # 使用 place 布局管理器 label1.place( anchor='center' , relx=0.5, rely=0.52 # 控件相对于父容器的相对位置x,y , relwidth=0.47, relheight=0.18 ) #给一个姓名列表,随机返回一个列表中的值 def rc(): label1.configure(text=random.choice(ksp)) # 更新标签内容 #点击按钮后随机选择一个人名,并且让labal中的文本换为随机选择出来的文本 button = tk.Button(root, text="开始奖励", anchor='center', # 文本在小部件的位置(这里是中间) activeforeground='black', # 当鼠标放在按钮上时,按钮的前景色(实际是文本的颜色) bd=5, # 边框宽度5px bg='blue', # 没有点击按钮时的背景色 command=lambda: rc(), # 用来执行按钮关联的回调函数。当按钮被点击时,执行该函数。 fg='white', # 文本的颜色 font=('Arial', 10, 'bold'), # 按钮的字体样式 height=15, # 按钮的总高度 pady=20, # 按钮内的文本与上下边界的垂直间距为 20 像素 state='normal' # 设置按钮的可用状态 ) button.place(relx=0.5, rely=0.7, relwidth=0.45, relheight=0.1,anchor='center') labals=[label,label1] # 更新控件和字体大小的函数,随着窗口大小而变化 def update_size(event, labels): if not hasattr(update_size, 'updating'): update_size.updating = True new_font_size = int(min(event.width / 10, event.height / 10)) # 根据窗口的宽度和高度计算新的字体大小 for label in labels: label.config(font=("Helvetica", new_font_size, "bold")) root.after_idle(lambda: setattr(update_size, 'updating', False)) # 绑定窗口大小改变事件 root.bind("<Configure>", lambda event: update_size(event, labals)) root.mainloop() #进入循环 return label