python gui颜色对话框colorchooser

fileName = colorchooser.askcolor()
(rgb,hx)=colorchooser.askcolor()

一目了然看代码:

from tkinter import colorchooser
from tkinter import *
 
root =Tk()
 
def callback():
    fileName = colorchooser.askcolor()
    print(fileName)
 
Button(root, text='选择颜色', command=callback).pack()
 
mainloop()

#rgb
(rgb,hx)=colorchooser.askcolor()
    print('rgb='+str(rgb)+' hx='+hx)

在 colorchooser 模块下提供了用于生成颜色选择对话框的 askcolor() 工具函数,为该工具函数可指定如下选项:

  • parent:指定该对话框的属主窗口。
  • title:指定该对话框的标题。
  • color:指定该对话框初始选择的颜色。
python gui颜色对话框colorchooser

函数返回值

  1. 如果用户点击的 ‘确定’ 按钮,返回值是一个二元组 (triple, color),其中的 triple 是一个三元组 (R, G, B)–其中 R, G, B 的范围是 [0, 255](就是该颜色的 RGB 颜色),第二个参数选中颜色的 16 进制的值
  2. 如果用户点击的 ‘取消’ 按钮,返回值是(None, None)

Q&A
可能有人会比较好奇为什么要这样写:

from tkinter import colorchooser
from tkinter import *

其中的 from tkinter import * 难道没有包含 from tkinter import colorchooser 吗?
经过尝试我们会发现,还必须加上 from tkinter import colorchooser 这段代码,否则会报错。
首先我们得对 Python 的 module 和 package 这两个概念有所了解,看 sof 上的这个问题:difference between a Python module and a Python package

简单归纳如下

  • 任何一个 Python 文件都是一个都是一个 module,module 名称是没有 .py 扩展名的那部分。比如说有一个 a.py 的 Python 文件,那么这个文件就是一个 module,module 的名称是 a。我们可以通过 import a 来导入这个 module。
  • package 是很多 module 的集合。可以将 package 看成一个文件夹。将 package 和一个含有很多 .py 文件的文件夹区分开来的标准是 package 还有一个额外的
    __init__.py 。
python gui颜色对话框colorchooser

可以参考 sof 上的这个提问: whats the diference between from tkinter import * and from tkinter import ‘module’

下面是我对第一个链接最高赞的一个简单的概述:

当我们 import package 的时候,只是 import 了 package 的 init.py 中的 variables/functions/classes,而没有 import package 包含的 module。
所以如果我们想要使用 module 中的变量、函数、类,就得具体指明是哪个 module。

更多示例代码:

from tkinter import *
# 导入ttk
from tkinter import ttk
# 导入colorchooser
from tkinter import colorchooser
class App:
    def __init__(self, master):
        self.master = master
        self.initWidgets()
    def initWidgets(self):
        # 创建1个按钮,并为之绑定事件处理函数
        ttk.Button(self.master, text='选择颜色',
            command=self.choose_color # 绑定choose_color方法
            ).pack(side=LEFT, ipadx=5, ipady=5, padx= 10)
    def choose_color(self):
        # 调用askcolor函数获取选中的颜色
        print(colorchooser.askcolor(parent=self.master, title='选择画笔颜色',
            color = 'blue')) # 初始颜色
root = Tk()
root.title("颜色对话框测试")
App(root)
root.mainloop()


#coding=utf-8
#颜色选择器
from tkinter import *
import tkinter.colorchooser as cc    #给导入的包指定一个别名
 
class App:
	def __init__(self,master):
		frame=Frame(master)
		frame.pack()
		button=Button(frame,text='选择颜色',command=self.ask_color)
		button.grid(row=0,column=0)
	def ask_color(self):
		(rgb,hx)=cc.askcolor()       #************
		print('rgb='+str(rgb)+' hx='+hx)
		
root=Tk()
app=App(root)
root.mainloop()

上面程序中第 18 行代码就是调用 askcolor() 函数生成颜色选择对话框的关键代码。运行该程序,单击界面上的“选择颜色”按钮,将可以看到如图 1 所示的对话框。

python gui颜色对话框colorchooser

通过 colorchooser 模块下的工具函数打开的颜色选择对话框依赖所在的平台,因此在不同的平台上看到的颜色选择对话框是不同的。

当用户选择指定颜色,并单击颜色选择对话框中的“确定”按钮后,askcolor() 函数会返回用户所选择的颜色,因此可以在控制台看到用户所选择的颜色。

作者:

喜欢围棋和编程。

 
发布于 分类 编程标签

发表评论

电子邮件地址不会被公开。