gpt4 book ai didi

Python Tkinter - 选项数据库仅部分工作

转载 作者:太空宇宙 更新时间:2023-11-04 01:51:02 25 4
gpt4 key购买 nike

我正在制作一个带有深色主题的 GUI,并希望通过使用选项数据库设置默认参数来节省时间,但只有部分选项有效。 “背景”和“字体”等选项可以正常工作,但更改事件背景或为单选按钮选择颜色等其他选项不起作用。更改条目小部件上的“insertbackground”也不起作用。

我不确定为什么某些选项有效而其他选项无效。如果我在创建小部件时传入相同的参数,它就可以工作。例如:

myRadio = Radiobutton(frame, selectcolor='#FF0000', **otherKwargs)

我尝试了这两种方式。

import tkinter
from tkinter import Tk, ttk, Frame, Entry, Label, Button, Toplevel, BooleanVar, IntVar, Radiobutton, StringVar, Canvas
mw = Tk()

mw.option_readfile('StyleDatabase.txt')

# code here...

mw.mainloop()

“StyleDatabase.txt”文件包含以下内容:

*background: #000008
*foreground: grey90
*font: '', 11
*Entry*background: #404050
*Radiobutton*selectcolor: #FF0000 <---- This one doesn't work.

# also tried:
*selectcolor: #FF0000
*Radiobutton.selectcolor: #FF0000 <---- Neither worked

我还尝试使用 mw.option_add() 函数,但以下均无效:

mw.option_add('*selectbackground', 'blue')
mw.option_add('*Radiobutton*selectbackground', 'blue')
mw.option_add('*Radiobutton.selectbackground', 'blue')

据我所知,没有任何其他方法可以做到这一点。

编辑:这是一个演示问题的可行脚本,Python 3.x

import tkinter
from tkinter import Tk, ttk, Frame, Entry, Label, Button, Toplevel, BooleanVar, IntVar, Radiobutton, StringVar, Canvas

class MainUI:
def __init__(self, master):
self.master = master

Label(self.master, text='Hello').pack(side='top')

Entry(self.master).pack(side='top')
Entry(self.master, insertbackground='red').pack(side='top')

Button(self.master, text='Cyan Button').pack(side='top')

mw = Tk()

mw.option_add('*background', 'blue') # works
mw.option_add('*foreground', 'white') # works
mw.option_add('*Button.foreground', 'cyan') # works

mw.option_add('*insertbackground', 'red') # does not work. Works if i pass the argument in when creating the widget.
mw.option_add('*Entry.insertbackground', 'red') # also does not work
mw.option_add('*Entry*insertbackground', 'red') # also does not work

mainUI = MainUI(mw)

mw.mainloop()

最佳答案

Question: Option database only partially working

您受困于 tkinter 使用的不同选项名称和别名和基础 Tcl .


你的选项参数必须是,注意大写的Color :

*Radiobutton*selectColor: #FF0000

您可以获得.option_readfile 使用的名称或 .option_add 来自 .config :

myRadio = tk.Radiobutton(frame, selectcolor='#FF0000', **otherKwargs)
myRadio.grid()

print('{}'.format(myRadio.config()['selectcolor']))

>>> ('selectcolor', 'selectColor', 'Background', '#ffffff', '#FF0000')

这个答案,What are these strange options returned by the method configure? , 解释了五个值的每个选项。

The Second name, here 'selectColor', are used by the option database.


Note: Options not shown from <widget instance>.config() can not be set.

使用 Python 测试:3.5 - 'TclVersion': 8.6 'TkVersion': 8.6

关于Python Tkinter - 选项数据库仅部分工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58035707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com