Код: Выделить всё
import tkinter as tk
from hdpitkinter import HdpiTk
import customtkinter as ctk
import ctypes
def rescale(event, root, frames, scrolls):
scale_factor = ctypes.windll.shcore.GetScaleFactorForDevice(0)/100
print(scale_factor)
width = root.winfo_width()//scale_factor
height = root.winfo_height()//scale_factor
print("Width = ", width, "Height = ", height, "type", type(width))
for i in range(3):
frames[i].configure(width = width-10,height=(height//3)-30)
scrolls[i].configure(width = (width/2)-40,height=(height//3)-50)
scrolls[i+3].configure(width = (width/2)-40,height=(height//3)-50)
# Updates window
root.update_idletasks()
if __name__ == "__main__":
root = ctk.CTk()
root.geometry("1280x720")
root.minsize(width=1280,height=720)
root.title("Test")
root.configure(fg_color = "#4B4B4B")
height = 720
width = 1280
frames, scrolls, labels = [], [], []
leftFont = ctk.CTkFont(family="Inter", size=20, weight="normal")
rightFont = ctk.CTkFont(family="Inter", size=15, weight="normal")
# Base frames creation
for i in range(3):
frames.append(ctk.CTkFrame(master=root,fg_color="#504F4F", corner_radius=10, width = width-10, height=height/3-46))
# ScrollFrames creation
for i in range(6):
scrolls.append(ctk.CTkScrollableFrame(master=frames[i%3],fg_color="#504F4F", corner_radius= 10,width = ((width/2)-40)))
# Buttons creation
button1 = ctk.CTkButton(root, text="button1", font=leftFont, corner_radius=10,
fg_color="#1E1E1E", text_color="white", height=40)
button2 = ctk.CTkButton(root, text="button2", font=leftFont, corner_radius=10,
fg_color="#1E1E1E", text_color="white", height=40)
button3 = ctk.CTkButton(root, text="button3", font=leftFont, corner_radius=10,
fg_color="#1E1E1E", text_color="white", height=40)
# Placing of buttons
button1.grid(column = 0, row = 3,pady = 5, padx = 10, sticky="w")
button2.grid(column = 1, row = 3,pady = 5, padx = 10, sticky="w")
button3.grid(column = 1, row = 3,pady = 5, sticky="e")
# Frames placing
for i in range(3):
frames[i].grid(column= 0, row = i, columnspan=2, padx=3, pady=3,)
# Scrolls and labels placing
for i in range(3):
scrolls[i].grid(row = 0, column=0, padx = 5)
scrolls[i+3].grid(row = 0, column=1, padx = 5)
# Bind rescale method
root.bind("", lambda event, root = root, frames = frames, scrolls = scrolls: rescale(event, root, frames, scrolls))
root.mainloop()
Код: Выделить всё
Traceback (most recent call last):
File "d:\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "D:\test.py", line 58, in
root.bind("", lambda event, root = root, frames = frames, scrolls = scrolls: rescale(event, root, frames, scrolls))
File "D:\test.py", line 13, in rescale
frames[i].configure(width = width-10,height=(height//3)-30)
File "d:\lib\site-packages\customtkinter\windows\widgets\ctk_frame.py", line 167, in configure
super().configure(require_redraw=require_redraw, **kwargs)
File "d:\lib\site-packages\customtkinter\windows\widgets\core_widget_classes\ctk_base_class.py", line 117, in configure
self._set_dimensions(width=kwargs.pop("width"))
File "d:\lib\site-packages\customtkinter\windows\widgets\ctk_frame.py", line 88, in _set_dimensions
super()._set_dimensions(width, height)
File "d:\lib\site-packages\customtkinter\windows\widgets\core_widget_classes\ctk_base_class.py", line 240, in _set_dimensions
super().configure(width=self._apply_widget_scaling(self._desired_width),
RecursionError: maximum recursion depth exceeded while calling a Python object
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\test.py", line 59, in
root.mainloop()
File "d:\lib\site-packages\customtkinter\windows\ctk_tk.py", line 165, in mainloop
super().mainloop(*args, **kwargs)
File "d:\lib\tkinter\__init__.py", line 1458, in mainloop
self.tk.mainloop(n)
File "d:\lib\tkinter\__init__.py", line 1925, in __call__
self.widget._report_exception()
File "d:\lib\tkinter\__init__.py", line 1641, in _report_exception
root.report_callback_exception(exc, val, tb)
File "d:\lib\tkinter\__init__.py", line 2379, in report_callback_exception
traceback.print_exception(exc, val, tb)
File "d:\lib\traceback.py", line 119, in print_exception
te = TracebackException(type(value), value, tb, limit=limit, compact=True)
File "d:\lib\traceback.py", line 502, in __init__
self.stack = StackSummary.extract(
File "\lib\traceback.py", line 353, in extract
limit = getattr(sys, 'tracebacklimit', None)
RecursionError: maximum recursion depth exceeded while calling a Python object
Я нашел еще одну вещь. заключается в том, что если я создаю новую среду conda, проблема решается, загрузка окна все равно занимает много времени, но оно это делает.
Итак, мой вопрос: есть ли способ сделать уверены, что этого не произойдет, если я установлю его в другом месте или скомпилирую в exe?
Подробнее здесь: https://stackoverflow.com/questions/785 ... in-tkinter