如何删除选中复选框后出现的 Python3 tkinter ttk.CheckButton 虚线?
How do I remove the Python3 tkinter ttk.CheckButton dashed line that appears after selecting the checkbox?
有什么方法可以去除在使用 'default' 主题时单击 ttk.Checkbutton 对象的文本时出现的虚线轮廓吗?
示例。)
from tkinter import *
from tkinter import ttk
master = Tk()
style = ttk.Style() # print(self.style.theme_names())
style.theme_use('default')
var = IntVar()
c = ttk.Checkbutton(master, text="Click My Text", variable=var)
c.pack()
mainloop()
如果没有,有什么方法可以更改 运行 在 windows 上使用的标准主题的背景按钮颜色? (不幸的是,对于这个项目,我不能考虑使用任何其他 GUI 包)
OS: Windows 10
Python: 3.5.1
Frustration level: one bajillion
也许我错了,但是,似乎没有 "dash off" 选项。不过,还是有一些选择的。
您可以将 'takefocus' 选项设置为 False。这将停止显示虚线轮廓,但也会删除在控件之间切换的功能。
c = ttk.Checkbutton(master, text="Click My Text", variable=var, takefocus=False)
另一种选择是更改破折号的颜色以匹配背景:
style.configure('TCheckbutton', focuscolor=style.configure(".")["background"])
这种方法可行,但您还需要调整高亮颜色,使其始终不可见。
编辑
在举一个小例子来帮助解决其中一条评论时,我发现了一种稍微简单一些的方法。使用 cget() 我们可以得到 a 属性 的值。这可以用来代替摆弄样式,并且更易于阅读和理解。
使用 cget 上面的例子变成:
style.configure('TCheckbutton', focuscolor=master.cget("background"))
这只是将焦点颜色设置为等于主对象的背景颜色(window)。
根据要求,这是一个基于问题原始代码的完整示例:
from tkinter import *
from tkinter import ttk
master = Tk()
style = ttk.Style()
style.theme_use('default')
style.configure('TCheckbutton', focuscolor=master.cget("background"))
style.configure('TCheckbutton', activebackground=master.cget("background"))
style.configure('TCheckbutton', background=master.cget("background"))
var = IntVar()
c = ttk.Checkbutton(master, text="Click My Text", variable=var)
c.pack()
mainloop()
这里我们设置focuscolor, activebackground 和background 颜色等同于main window (master) 的背景。这具有删除虚线边框的效果。
但是,虚线边框是有原因的。它向用户显示哪个控件具有焦点。当 window 上只有一个控件时,它看起来有点奇怪。但是当你有多个时,它允许用户使用键盘比没有键盘更容易地浏览你的应用程序。
有什么方法可以去除在使用 'default' 主题时单击 ttk.Checkbutton 对象的文本时出现的虚线轮廓吗?
示例。)
from tkinter import *
from tkinter import ttk
master = Tk()
style = ttk.Style() # print(self.style.theme_names())
style.theme_use('default')
var = IntVar()
c = ttk.Checkbutton(master, text="Click My Text", variable=var)
c.pack()
mainloop()
如果没有,有什么方法可以更改 运行 在 windows 上使用的标准主题的背景按钮颜色? (不幸的是,对于这个项目,我不能考虑使用任何其他 GUI 包)
OS: Windows 10
Python: 3.5.1
Frustration level: one bajillion
也许我错了,但是,似乎没有 "dash off" 选项。不过,还是有一些选择的。
您可以将 'takefocus' 选项设置为 False。这将停止显示虚线轮廓,但也会删除在控件之间切换的功能。
c = ttk.Checkbutton(master, text="Click My Text", variable=var, takefocus=False)
另一种选择是更改破折号的颜色以匹配背景:
style.configure('TCheckbutton', focuscolor=style.configure(".")["background"])
这种方法可行,但您还需要调整高亮颜色,使其始终不可见。
编辑
在举一个小例子来帮助解决其中一条评论时,我发现了一种稍微简单一些的方法。使用 cget() 我们可以得到 a 属性 的值。这可以用来代替摆弄样式,并且更易于阅读和理解。
使用 cget 上面的例子变成:
style.configure('TCheckbutton', focuscolor=master.cget("background"))
这只是将焦点颜色设置为等于主对象的背景颜色(window)。
根据要求,这是一个基于问题原始代码的完整示例:
from tkinter import *
from tkinter import ttk
master = Tk()
style = ttk.Style()
style.theme_use('default')
style.configure('TCheckbutton', focuscolor=master.cget("background"))
style.configure('TCheckbutton', activebackground=master.cget("background"))
style.configure('TCheckbutton', background=master.cget("background"))
var = IntVar()
c = ttk.Checkbutton(master, text="Click My Text", variable=var)
c.pack()
mainloop()
这里我们设置focuscolor, activebackground 和background 颜色等同于main window (master) 的背景。这具有删除虚线边框的效果。
但是,虚线边框是有原因的。它向用户显示哪个控件具有焦点。当 window 上只有一个控件时,它看起来有点奇怪。但是当你有多个时,它允许用户使用键盘比没有键盘更容易地浏览你的应用程序。