Проблема разрешения виджетов фиксированной длины в приложении Tkinter - PullRequest
0 голосов
/ 05 августа 2020

В моем приложении Tkinter я использую диаграммы, тексты и изображения с фиксированной длиной и высотой. Если я запускаю приложение на другом компьютере с тем же разрешением экрана, что и компьютер, на котором я написал приложение Tkinter, все будет отображаться правильно.

Если приложение Tkinter запущено на компьютере с более низким разрешением экрана , изображения, тексты и диаграммы частично обрезаны. Поэтому они больше не отображаются полностью.

Чтобы проиллюстрировать это, я создал минимальный пример, в котором я использую кнопки фиксированной длины:

from tkinter import *

root = Tk()
root.attributes('-zoomed', True)          # For Linux user: maximaizes window
#root.state('zoomed')                     # For windows user use root.state('zoomed') 
                                          #instead         

Button(root, text = "Replacement for the main content ", padx = 450, pady=30).grid(row = 0, column = 0)
Button(root, text = "Replacement for an image, diagram, text", pady = 20).grid(row = 0, column = 1, padx = 5)


mainloop()

Если я использую то же разрешение экрана, что и Я использовал при создании приложения (в данном случае 1366 x 768) все будет отображаться правильно:

enter image description here

For a lower resolution (1280 x 720) a part is cut off:

введите описание изображения здесь

Кто-нибудь из вас знает, как я могу решить эту проблему?

1 Ответ

0 голосов
/ 05 августа 2020

Если мне нужен динамический c размер, я обычно вычисляю ширину и высоту экрана и соответствующим образом масштабирую их. Приведенный ниже код должен помочь, хотя вам, возможно, придется поиграть с числами, чтобы он выглядел правильно.

from tkinter import *

root = Tk()
root.attributes('-zoomed', True)    # For Linux user: maximizes window
# root.state('zoomed')              # For windows user use root.state('zoomed')
root.update()                       # instead
width, height = root.winfo_width(), root.winfo_height()
set_width = 1366
set_height = 768

width_multiplier = width / set_width
height_multiplier = height / set_height


Button(root, text="Replacement for the main content ",
       padx=450 * width_multiplier,
       pady=30 * height_multiplier).grid(row=0, column=0)
Button(root, text="Replacement for an image, diagram, text",
       pady=20 * height_multiplier).grid(row=0, column=1,
                                         padx=5 * width_multiplier)


root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...