Помогите задать параметр в def myname():
Имею пример:
self.m = Menu(self.c, tearoff=0)
self.m["bg"] = 'white'
self.m["activebackground"] = 'gray'
как мне задать параметры, для функции def myname():,
таким образом чтобы я мог читать вызывая self.myname["bg"]
и изменять вызывая self.myname["bg"] = 'white'
Псевдокод:
myname = self.myname()
myname['bg'] = 'gray'
def myname(self, bg):
self.bg = bg
print(self.bg)
Нашел информацию о Menu в файле __init__.py tkinter:
class Menu(Widget):
def __init__(self, master=None, cnf={}, **kw):
Widget.__init__(self, master, 'menu', cnf, kw)
...
def add(self, itemType, cnf={}, **kw):
"""Internal function."""
self.tk.call((self._w, 'add', itemType) +
self._options(cnf, kw))
Подскажите как работает словарь cnf={} ???
Нашел еще кое что:
class BaseWidget(Misc):
...
def __init__(self, master, widgetName, cnf={}, kw={}, extra=()):
"""Construct a widget with the parent widget MASTER, a name WIDGETNAME
and appropriate options."""
if kw:
cnf = _cnfmerge((cnf, kw))
self.widgetName = widgetName
BaseWidget._setup(self, master, cnf)
if self._tclCommands is None:
self._tclCommands = []
classes = [(k, v) for k, v in cnf.items() if isinstance(k, type)]
for k, v in classes:
del cnf[k]
self.tk.call(
(widgetName, self._w) + extra + self._options(cnf))
for k, v in classes:
k.configure(self, v)
Ответы (1 шт):
Автор решения: Danis
→ Ссылка
Вариант с использованием класса:
class MyClass():
def __init__(self, **kwargs):
self.dict_ = kwargs
def __setitem__(self, key, value):
self.dict_[key] = value
def __getitem__(self, key):
return self.dict_[key]
def __repr__(self):
return str(self.dict_)
x = MyClass(bg = "gray")
x["bg"] = "white"
print(x["bg"])
print(x)
вывод:
white
{"bg": "white"}