From 1722cfecff963325644df913547795089e909cc5 Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Tue, 10 Oct 2023 13:01:46 +0900 Subject: [PATCH] =?UTF-8?q?[Update]=20Config=20Window:=20Dropdown=20Menu?= =?UTF-8?q?=20Window.=20UI=20Size=E5=A4=89=E6=9B=B4=E5=AF=BE=E5=BF=9C(?= =?UTF-8?q?=E3=82=B9=E3=82=AF=E3=83=AD=E3=83=BC=E3=83=AB=E3=83=BC=E3=83=90?= =?UTF-8?q?=E3=83=BC)=20[bugfix]=20Config=20Window:=20Dropdown=20Menu=20Wi?= =?UTF-8?q?ndow.=20=E3=81=95=E3=82=89=E3=81=AB1px=E3=83=90=E3=82=B0?= =?UTF-8?q?=E3=81=AE=E4=BF=AE=E6=AD=A3=20=E6=8C=87=E5=AE=9A=E3=82=B5?= =?UTF-8?q?=E3=82=A4=E3=82=BA=E3=81=AB=E9=96=A2=E3=82=8F=E3=82=89=E3=81=9A?= =?UTF-8?q?=E3=80=81=E3=83=95=E3=82=A9=E3=83=B3=E3=83=88=E3=81=AB=E3=82=88?= =?UTF-8?q?=E3=81=A3=E3=81=A6height=E3=81=8C=E5=A4=89=E3=82=8F=E3=82=8B?= =?UTF-8?q?=E3=81=AE=E3=81=A7=E3=80=81=E5=86=85=E9=83=A8=E3=81=A7=E6=9B=B4?= =?UTF-8?q?=E3=81=AB=E8=A8=88=E7=AE=97=E3=81=97=E3=81=A6=E8=AA=BF=E6=95=B4?= =?UTF-8?q?=E3=80=82=E4=BF=AE=E6=AD=A3=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils.py | 8 ++++++- vrct_gui/_CreateDropdownMenuWindow.py | 30 ++++++++++++++++-------- vrct_gui/ui_managers/UiScalingManager.py | 6 +++-- vrct_gui/vrct_gui.py | 4 +++- 4 files changed, 34 insertions(+), 14 deletions(-) diff --git a/utils.py b/utils.py index d15b169c..1a408523 100644 --- a/utils.py +++ b/utils.py @@ -12,4 +12,10 @@ def get_key_by_value(dictionary, value): return None def callFunctionIfCallable(function, *args): - if callable(function) is True: function(*args) \ No newline at end of file + if callable(function) is True: function(*args) + +def isEven(number): + return number % 2 == 0 + +def makeEven(number): + return number if isEven(number) else number + 1 \ No newline at end of file diff --git a/vrct_gui/_CreateDropdownMenuWindow.py b/vrct_gui/_CreateDropdownMenuWindow.py index 287dfb51..f5f79be7 100644 --- a/vrct_gui/_CreateDropdownMenuWindow.py +++ b/vrct_gui/_CreateDropdownMenuWindow.py @@ -6,6 +6,8 @@ from time import sleep from .ui_utils import bindButtonReleaseFunction, bindEnterAndLeaveColor, bindButtonPressColor, getLatestWidth, getLatestHeight from functools import partial +from utils import isEven, makeEven + class _CreateDropdownMenuWindow(CTkToplevel): def __init__(self, settings, @@ -14,7 +16,9 @@ class _CreateDropdownMenuWindow(CTkToplevel): window_additional_y_pos, window_border_width, scrollbar_ipadx, - value_padx, + scrollbar_width, + value_ipadx, + value_ipady, value_pady, value_font_size, @@ -42,7 +46,9 @@ class _CreateDropdownMenuWindow(CTkToplevel): self.window_additional_y_pos=window_additional_y_pos self.window_border_width=window_border_width self.scrollbar_ipadx=scrollbar_ipadx - self.value_padx=value_padx + self.scrollbar_width=scrollbar_width + self.value_ipadx=value_ipadx + self.value_ipady=value_ipady self.value_pady=value_pady self.value_font_size=value_font_size @@ -165,7 +171,7 @@ class _CreateDropdownMenuWindow(CTkToplevel): # for get to the height__________________ __dropdown_menu_value_wrapper = CTkFrame(self.dropdown_menu_values_wrapper, corner_radius=0, fg_color=self.values_bg_color, width=0, height=0) - __dropdown_menu_value_wrapper.grid(row=0, column=0, sticky="nsew") + __dropdown_menu_value_wrapper.grid(row=0, column=0, pady=self.value_pady, sticky="nsew") setattr(self, f"{dropdown_menu_widget_id}__{0}", __dropdown_menu_value_wrapper) @@ -182,8 +188,14 @@ class _CreateDropdownMenuWindow(CTkToplevel): ) # setattr(self, f"l", __label_widget) - __label_widget.grid(row=1, column=0, padx=self.value_padx, pady=self.value_pady, sticky="w") + __label_widget.grid(row=1, column=0, padx=self.value_ipadx, pady=self.value_ipady, sticky="w") label_height = getLatestHeight(__dropdown_menu_value_wrapper) + + # for fixing 1px bug + if isEven(label_height) is False: + self.value_ipady = (self.value_ipady[0], self.value_ipady[1] - 1) + + __dropdown_menu_value_wrapper.destroy() # ______________________________________ dropdown_menu_values_length = len(dropdown_menu_values) @@ -193,16 +205,14 @@ class _CreateDropdownMenuWindow(CTkToplevel): self.new_height = int(self.max_display_length * label_height) - def makeEven(input_value): - return input_value + 1 if input_value % 2 == 1 else input_value - - + # for fixing 1px bug self.new_height = makeEven(self.new_height) self.new_width = makeEven(self.new_width) self.scroll_frame_container.configure(width=self.new_width, height=self.new_height) # This is for CustomTkinter's spec change or bug fix. self.scroll_frame_container._scrollbar.configure(height=0) + self.scroll_frame_container._scrollbar.configure(width=self.scrollbar_width) @@ -210,7 +220,7 @@ class _CreateDropdownMenuWindow(CTkToplevel): for dropdown_menu_value in dropdown_menu_values: dropdown_menu_value_wrapper = CTkFrame(self.dropdown_menu_values_wrapper, corner_radius=0, fg_color=self.values_bg_color, width=0, height=0, cursor="hand2") - dropdown_menu_value_wrapper.grid(row=row, column=0, sticky="nsew") + dropdown_menu_value_wrapper.grid(row=row, column=0, pady=self.value_pady, sticky="nsew") setattr(self, f"{dropdown_menu_widget_id}__{row}", dropdown_menu_value_wrapper) @@ -228,7 +238,7 @@ class _CreateDropdownMenuWindow(CTkToplevel): ) # setattr(self, f"l", label_widget) - label_widget.grid(row=1, column=0, padx=self.value_padx, pady=self.value_pady, sticky="w") + label_widget.grid(row=1, column=0, padx=self.value_ipadx, pady=self.value_ipady, sticky="w") bindEnterAndLeaveColor([dropdown_menu_value_wrapper, label_widget], self.values_hovered_bg_color, self.values_bg_color) diff --git a/vrct_gui/ui_managers/UiScalingManager.py b/vrct_gui/ui_managers/UiScalingManager.py index df68a884..d95eed7f 100644 --- a/vrct_gui/ui_managers/UiScalingManager.py +++ b/vrct_gui/ui_managers/UiScalingManager.py @@ -158,8 +158,10 @@ class UiScalingManager(): self.config_window.SB__DROPDOWN_MENU_WIDTH = self.config_window.SB__OPTIONMENU_MIN_WIDTH self.config_window.SB__DROPDOWN_MENU_WINDOW_BORDER_WIDTH = self._calculateUiSize(1, is_allowed_odd=True) self.config_window.SB__DROPDOWN_MENU_SCROLLBAR_IPADX = (self._calculateUiSize(2), self._calculateUiSize(2)) - self.config_window.SB__DROPDOWN_MENU_VALUE_PADX = (self._calculateUiSize(8), 0) - self.config_window.SB__DROPDOWN_MENU_VALUE_PADY = self._calculateUiSize(6) + self.config_window.SB__DROPDOWN_MENU_SCROLLBAR_WIDTH = self._calculateUiSize(16) + self.config_window.SB__DROPDOWN_MENU_VALUE_IPADX = (self._calculateUiSize(8), 0) + self.config_window.SB__DROPDOWN_MENU_VALUE_IPADY = (self._calculateUiSize(6), self._calculateUiSize(6)) + self.config_window.SB__DROPDOWN_MENU_VALUE_PADY = (0, self._calculateUiSize(1, is_allowed_odd=True)) self.config_window.SB__DROPDOWN_MENU_VALUE_FONT_SIZE = self._calculateUiSize(14) diff --git a/vrct_gui/vrct_gui.py b/vrct_gui/vrct_gui.py index 7ca3d7ea..3798faa1 100644 --- a/vrct_gui/vrct_gui.py +++ b/vrct_gui/vrct_gui.py @@ -39,7 +39,9 @@ class VRCT_GUI(CTk): window_additional_y_pos=self.settings.config_window.uism.SB__DROPDOWN_MENU_WINDOW_ADDITIONAL_Y_POS, window_border_width=self.settings.config_window.uism.SB__DROPDOWN_MENU_WINDOW_BORDER_WIDTH, scrollbar_ipadx=self.settings.config_window.uism.SB__DROPDOWN_MENU_SCROLLBAR_IPADX, - value_padx=self.settings.config_window.uism.SB__DROPDOWN_MENU_VALUE_PADX, + scrollbar_width=self.settings.config_window.uism.SB__DROPDOWN_MENU_SCROLLBAR_WIDTH, + value_ipadx=self.settings.config_window.uism.SB__DROPDOWN_MENU_VALUE_IPADX, + value_ipady=self.settings.config_window.uism.SB__DROPDOWN_MENU_VALUE_IPADY, value_pady=self.settings.config_window.uism.SB__DROPDOWN_MENU_VALUE_PADY, value_font_size=self.settings.config_window.uism.SB__DROPDOWN_MENU_VALUE_FONT_SIZE,