[Update] Config Window: Dropdown Menu Window. UI Size変更対応(スクロールーバー)
[bugfix] Config Window: Dropdown Menu Window. さらに1pxバグの修正 指定サイズに関わらず、フォントによってheightが変わるので、内部で更に計算して調整。修正。
This commit is contained in:
8
utils.py
8
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)
|
||||
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
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user