[bugfix] CTkEntry系で、入力値に簡易バリデーション追加。

TkinterのVariableを使っているCTkEntryは、型を可能なものはStrings型に。(空文字などint型に変換できずエラーになってしまうので)
UI側ではどんな型であれ値であれコントローラへ値を渡し、コントローラが判断して処理するように(CTkEntryにセットしたり値を削除したり)
This commit is contained in:
Sakamoto Shiina
2023-09-12 23:24:05 +09:00
parent f071be5cb6
commit 60e73760a7
5 changed files with 146 additions and 37 deletions

View File

@@ -186,7 +186,8 @@ class _SettingBoxGenerator():
passive_button_attr_name, passive_button_command,
active_button_attr_name, active_button_command,
button_image_file,
variable,
entry_variable,
slider_variable,
slider_number_of_steps: Union[int, None] = None,
):
@@ -205,28 +206,15 @@ class _SettingBoxGenerator():
BUTTON_PADDING = int(BAR_WIDTH + BAR_PADDING + self.uism.SB__PROGRESSBAR_X_SLIDER__BUTTON_RIGHT_PADX)
def adjusted_command__for_entry_bind__Any_KeyRelease(e):
# try:
# int(e.widget.get())
# except:
# e.widget.delete(0, CTK_END)
# return
# print(int(e.widget.get()))
i = int(e.widget.get())
if i < 0 or i > slider_range[1]:
e.widget.delete(0, CTK_END)
i = max(0, min(int(e.widget.get()), slider_range[1]))
# e.widget.insert(0, i)
command(i)
command(e.widget.get())
def adjusted_command__for_slider(value):
command(int(value))
command(value)
entry_widget = CTkEntry(
setting_box_progressbar_x_slider_frame,
width=ENTRY_WIDTH,
height=self.uism.SB__PROGRESSBAR_X_SLIDER__ENTRY_HEIGHT,
textvariable=variable,
textvariable=entry_variable,
font=CTkFont(family=self.FONT_FAMILY, size=self.uism.SB__ENTRY_FONT_SIZE, weight="normal"),
)
@@ -244,7 +232,7 @@ class _SettingBoxGenerator():
to=slider_range[1],
number_of_steps=slider_number_of_steps,
command=adjusted_command__for_slider,
variable=variable,
variable=slider_variable,
height=self.uism.SB__PROGRESSBAR_X_SLIDER__SLIDER_HEIGHT,
width=BAR_WIDTH,
border_width=0,

View File

@@ -74,12 +74,14 @@ def createSettingBox_Mic(setting_box_wrapper, config_window, settings, view_vari
for_var_label_text=view_variable.VAR_LABEL_MIC_ENERGY_THRESHOLD,
for_var_desc_text=view_variable.VAR_DESC_MIC_ENERGY_THRESHOLD,
command=slider_input_mic_energy_threshold_callback,
variable=view_variable.VAR_MIC_ENERGY_THRESHOLD,
entry_attr_name="sb__progressbar_x_slider__entry_mic_energy_threshold",
entry_variable=view_variable.VAR_MIC_ENERGY_THRESHOLD__ENTRY,
slider_attr_name="progressbar_x_slider__slider_mic_energy_threshold",
slider_range=view_variable.SLIDER_RANGE_MIC_ENERGY_THRESHOLD,
slider_variable=view_variable.VAR_MIC_ENERGY_THRESHOLD__SLIDER,
progressbar_attr_name="sb__progressbar_x_slider__progressbar_mic_energy_threshold",

View File

@@ -55,12 +55,14 @@ def createSettingBox_Speaker(setting_box_wrapper, config_window, settings, view_
for_var_label_text=view_variable.VAR_LABEL_SPEAKER_ENERGY_THRESHOLD,
for_var_desc_text=view_variable.VAR_DESC_SPEAKER_ENERGY_THRESHOLD,
command=slider_input_speaker_energy_threshold_callback,
variable=view_variable.VAR_SPEAKER_ENERGY_THRESHOLD,
entry_variable=view_variable.VAR_SPEAKER_ENERGY_THRESHOLD__ENTRY,
entry_attr_name="sb__progressbar_x_slider__entry_speaker_energy_threshold",
slider_attr_name="progressbar_x_slider__slider_speaker_energy_threshold",
slider_range=view_variable.SLIDER_RANGE_SPEAKER_ENERGY_THRESHOLD,
slider_variable=view_variable.VAR_SPEAKER_ENERGY_THRESHOLD__SLIDER,
progressbar_attr_name="sb__progressbar_x_slider__progressbar_speaker_energy_threshold",