Skip to content

Commit 04b6eec

Browse files
committed
IMPROVEMENT: Make windows look the same as linux
Use white backgrounds in readonly comboboxes
1 parent 20fe5b6 commit 04b6eec

File tree

3 files changed

+20
-14
lines changed

3 files changed

+20
-14
lines changed

MethodicConfigurator/frontend_tkinter_base.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -314,14 +314,11 @@ def __init__(self, *args, **kwargs):
314314
self.tag_configure("h1", font=h1_font, spacing3=default_size)
315315

316316

317-
def get_font_family(widget: tk.Widget) -> str:
317+
def get_widget_font(widget: tk.Widget) -> dict:
318318
style = ttk.Style()
319-
widget_style = widget.cget("style") # Get the style used by the widget
320-
font_descriptions = style.lookup(widget_style, 'font')
321-
if font_descriptions:
322-
font_family = font_descriptions[0] # Font description is a tuple where the first element is the family
323-
return font_family
324-
return "Font family not found"
319+
widget_style = widget.cget('style') # Get the style used by the widget
320+
font_name = style.lookup(widget_style, 'font')
321+
return tkFont.nametofont(font_name).config()
325322

326323

327324
class BaseWindow:

MethodicConfigurator/frontend_tkinter_parameter_editor.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
from MethodicConfigurator.frontend_tkinter_base import ProgressWindow
3535
from MethodicConfigurator.frontend_tkinter_base import BaseWindow
3636
from MethodicConfigurator.frontend_tkinter_base import RichText
37-
from MethodicConfigurator.frontend_tkinter_base import get_font_family
37+
from MethodicConfigurator.frontend_tkinter_base import get_widget_font
3838

3939
from MethodicConfigurator.frontend_tkinter_directory_selection import VehicleDirectorySelectionWidgets
4040

@@ -194,6 +194,11 @@ def __init__(self, current_file: str, flight_controller: FlightController,
194194
# Bind the close_connection_and_quit function to the window close event
195195
self.root.protocol("WM_DELETE_WINDOW", self.close_connection_and_quit)
196196

197+
style = ttk.Style()
198+
style.map('readonly.TCombobox', fieldbackground=[('readonly', 'white')])
199+
style.map('readonly.TCombobox', selectbackground=[('readonly', 'white')])
200+
style.map('readonly.TCombobox', selectforeground=[('readonly', 'black')])
201+
197202
self.__create_conf_widgets(version)
198203

199204
# Create a DocumentationFrame object for the Documentation Content
@@ -238,11 +243,11 @@ def __create_conf_widgets(self, version: str):
238243
"files in the selected vehicle directory\nIt will automatically "
239244
"advance to the next file once the current file is uploaded to the "
240245
"fight controller",
241-
state='readonly', width=45)
246+
state='readonly', width=45, style='readonly.TCombobox')
242247
self.file_selection_combobox.bind("<<ComboboxSelected>>", self.on_param_file_combobox_change)
243248
self.file_selection_combobox.pack(side=tk.TOP, anchor=tk.NW, pady=(4, 0))
244249

245-
self.legend_frame(config_subframe, get_font_family(file_selection_label))
250+
self.legend_frame(config_subframe, get_widget_font(file_selection_label)['family'])
246251

247252
image_label = BaseWindow.put_image_in_label(config_frame, LocalFilesystem.application_logo_filepath())
248253
image_label.pack(side=tk.RIGHT, anchor=tk.NE, padx=(4, 4), pady=(4, 0))

MethodicConfigurator/frontend_tkinter_parameter_editor_table.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
#from logging import error as logging_error
2222
from logging import critical as logging_critical
2323

24+
from platform import system as platform_system
25+
2426
#from MethodicConfigurator.backend_filesystem import LocalFilesystem
2527
from MethodicConfigurator.backend_filesystem import is_within_tolerance
2628

@@ -29,7 +31,7 @@
2931
from MethodicConfigurator.frontend_tkinter_base import show_tooltip
3032
#from MethodicConfigurator.frontend_tkinter_base import AutoResizeCombobox
3133
from MethodicConfigurator.frontend_tkinter_base import ScrollFrame
32-
from MethodicConfigurator.frontend_tkinter_base import get_font_family
34+
from MethodicConfigurator.frontend_tkinter_base import get_widget_font
3335

3436
from MethodicConfigurator.frontend_tkinter_connection_selection import PairTupleCombobox
3537

@@ -253,10 +255,12 @@ def __create_new_value_entry(self, param_name, param, # pylint: disable=too-man
253255
value_str in param_metadata['values']:
254256
selected_value = param_metadata['values'].get(value_str, None)
255257
new_value_entry = PairTupleCombobox(self.view_port, param_metadata['values'],
256-
value_str, param_name)
258+
value_str, param_name,
259+
style='TCombobox' if present_as_forced else 'readonly.TCombobox')
257260
new_value_entry.set(selected_value)
258-
new_value_entry.config(state='readonly', width=9, font=(get_font_family(new_value_entry), 9))
259-
new_value_entry.config(background='white') # does not work when done together with state='readonly'
261+
font = get_widget_font(new_value_entry)
262+
font['size'] -= 2 if platform_system() == 'Windows' else 1
263+
new_value_entry.config(state='readonly', width=9, font=(font['family'], font['size']))
260264
else:
261265
new_value_entry = ttk.Entry(self.view_port, width=10, justify=tk.RIGHT)
262266
ParameterEditorTable.__update_new_value_entry_text(new_value_entry, param.value, param_default)

0 commit comments

Comments
 (0)