自学内容网 自学内容网

python使用 tkinter 生成随机颜色

先看效果:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

只要不停点击底部的按钮,每次都会生成新的颜色。炫酷啊。

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 ones
    make_9_buttons()  # 2.
    print("\n\n")


def main_button():
    b = Button(win,  # !!!!!!!!!! 注意这里是 win 不是 frame
               text='生成新的颜色',
               bg='#e05c5b',  # # cyan
               command=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()


原文地址:https://blog.csdn.net/waterHBO/article/details/140644146

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!