여기에 놀라운 기능이 있습니다.
def update_config(val):
config = configparser.ConfigParser()
fonts_comb = ""
for i in range(len(fonts)):
if i == len(fonts) - 1:
fonts_comb = fonts_comb + fonts[i]
else:
fonts_comb = fonts_comb + fonts[i] + ", "
config["LISTS"] = {"Fonts": fonts_comb}
config["variables"] = {"font_size": (screen_font_size.var).get(),
"x_offset": (x_offset_spin.var).get(),
"y_offset": (y_offset_spin.var).get(),
"language": language,
"preview_font_size": (preview_font_size_spin.var).get()}
variables = config["variables"]
if (fonts_menu.var).get() != strings[17]:
variables["font"] = (fonts_menu.var).get()
else:
variables["font"] = font
if (preview_fonts.var).get() != strings[18]:
variables["preview_font"] = (preview_fonts.var).get()
else:
variables["preview_font"] = preview_font
with open("config.ini", "w") as configfile:
config.write(configfile)
관련성이 있는지도 모르겠지만 기본적으로 이름이 말하는대로 수행합니다. 구성 파일을 업데이트합니다.
함수에 대해 내가 싫어하는 점은 인수가 필요하다는 것입니다 ( val
여기에 self
아마도 있어야 합니까?). 그리고 그것은 그 주장이 필요하기 때문에 그것을 "적절하게"라고 부를 수 없습니다. 다음은 잘 작동합니다.
class OptionMenus(tk.OptionMenu):
def __init__(self, master, status, *fonts):
self.var = tk.StringVar(master)
(self.var).set(status)
(tk.OptionMenu).__init__(self, master, self.var, *fonts,
command = update_config)
그러나-다음과 같이 호출하면이 오류가 반환됩니다. TypeError: update_config() takes 0 positional arguments but 1 was given
class Spinboxes(tk.Spinbox):
def __init__(self, master):
self.var = tk.IntVar()
tk.Spinbox.__init__(self, master, textvariable = self.var,
from_ = 0, to = 100, command = update_config)
지금은 이것을 사용하여 해결했습니다.
def crossover():
val = ""
update_config(val)
그러나 그것은 일을하는 일종의 원숭이 같은 방법 인 것 같습니다. 그래서 그 함수를 호출하는 더 좋은 방법이 있습니까?
기본 인수 값을 사용하십시오.
def update_config(val=None):
# etc.
인수를 완전히 제거하고 단일 인수 lambda
를 사용하여 인수 를 전달해야하는 컨텍스트에서 호출 할 수도 있습니다.
def update_config():
# etc.
# ...
tk.OptionMenu.__init__(self, master, self.var, *fonts,
command=lambda _: update_config())
하지만 첫 번째 옵션이 더 간단하다고 생각합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다