先看效果:
只要不停点击底部的按钮,每次都会生成新的颜色。炫酷啊。
import random
import tkinter
import tkinter.messagebox
from tkinter import Button# todo
"""
1. 设置一个按钮,来让用户选择是否显示颜色值
2. 把按钮换成 Label, 用户可以复制颜色。
3. 换一个版本,自动生成随机颜色, 每2秒自动更换颜色。
"""win = tkinter.Tk()
win.title("Daily Tools")
win.geometry("1250x850+300+200")# 使用一个 frame, 后面用来清理其他的组件
frame = tkinter.Frame(win)
frame.pack(side="top", expand=True, fill="both")colors = ['red', 'green', 'blue', ' yellow', 'orange', 'white', 'cyan', 'purple']# 默认的调用函数。 测试使用的函数。
def what_todo():print("ok")# tkinter.messagebox.showinfo(title='Hey', message='Nice!')def make_button(button_text="这是一个按钮", button_function=what_todo): ## 只有 button_text 和 button_function 是可变参数,其他都设置为一样的。多个按钮,样式一致,整整齐齐。color_text = "#" + ("%06x" % random.randint(0, 16777215))b = Button(frame,text=color_text, # button_text,# 生成随机颜色,这里有很多种写法。 # https://stackoverflow.com/questions/19812288/how-to-make-the-foreground-and-background-colors-of-a-button-in-tkinter-random# bg=random.choice(colors),bg=color_text, #command=button_function,fg="black",font=('黑体', 15),width=40,height=8,wraplength=0, # 控制多少行来显示文本 默认是 0 可以修改为 3 多行显示。justify="center", # 字体的对齐方向anchor="center", # 这个 pos 控制的是文本内容在 label 框内的朝向relief="ridge", # 边框效果 raised ridge)print("cur color: ", color_text)return b# 生成3*3=9个随机颜色
def make_9_buttons():for i in range(3):for j in range(3):bb = make_button()bb.grid(row=i, column=j)# 生成新的颜色。
def generate_new_colors():for widget in frame.winfo_children():widget.destroy() # 1. clear old onesmake_9_buttons() # 2.print("\n\n")def main_button():b = Button(win, # !!!!!!!!!! 注意这里是 win 不是 frametext='生成新的颜色',bg='#e05c5b', # # cyancommand=generate_new_colors,fg="black",font=('黑体', 16),width=40,height=12,wraplength=0, # 控制多少行来显示文本 默认是 0 可以修改为 3 多行显示。justify="center", # 字体的对齐方向anchor="center", # 这个 pos 控制的是文本内容在 label 框内的朝向relief="ridge", # 边框效果 raised ridge)b.pack(side="bottom", padx=10, pady=10)return b# 初始布局
make_9_buttons()
main_button()
win.mainloop()