tkinter.scrolledtext.ScrolledText проблема с количеством столбцов - PullRequest
0 голосов
/ 16 мая 2018

Ниже приведен раздел кода, помогающий показать, что я хочу.Виджет ScrolledText занимает более 3/4 ширины, но я настроил его на 1/2, пытаясь определить, как разделить два элемента управления по центру.Когда я закомментирую виджет ScrolledText и добавлю на его место второй список тестов с той же информацией о сетке, он будет разбит на середину.Есть ли что-то отличное от настройки виджета ScrolledText?

page.rowconfigure(1, weight=1)
page.columnconfigure(0, weight=1)
page.columnconfigure(6, weight=1)

lb_reports = Listbox(page, selectmode=SINGLE)
lb_reports.grid(row=1, column=0, columnspan=5, sticky=W + N + S + E, pady=5, padx=5)

# Following list box is here as a test, it does split down the middle of screen as expected.
# self.lb_reports1 = Listbox(page, selectmode=SINGLE)
# self.lb_reports1.grid(row=1, column=5, columnspan=5, sticky=W + N + S + E, pady=5, padx=5)

# this widget takes right 3/4 of screen instead of 1/2
st_test = tkinter.scrolledtext.ScrolledText(page)
st_test.grid(row=1, column=6, columnspan=5, sticky=W + N + S + E, pady=5, padx=5)

1 Ответ

0 голосов
/ 16 мая 2018

Присвоение столбцам веса не заставляет столбцы иметь одинаковый размер, но заставляет их расти с одинаковой скоростью.От Effbot :

weight =
Относительный вес, используемый для распределения дополнительного пространства между столбцами.Столбец с весом 2 будет расти в два раза быстрее, чем столбец с весом 1. Значение по умолчанию равно 0, что означает, что столбец не будет расти вообще.

Тогда из документации Текстовый виджет (от которого основан ScrolledText) вы можете видеть, что ширина виджета по умолчанию равна 80 (символы, а не пиксели!), В то время как Список имеет ширину по умолчанию, равную20 (снова символы).

Таким образом, хотя оба столбца растут с одинаковой скоростью, они не начинают с одинакового размера.

Теперь, если вы дадите обоим виджетам одинаковое значение ширины,Вы можете увидеть, что они все еще не одинаковой ширины.Это может произойти, потому что шрифты для виджетов Text и Listbox не совпадают.Если вы дадите им одинаковую ширину и один и тот же шрифт, они должны иметь одинаковую ширину для начала, поэтому при росте они останутся одинаковыми:

from tkinter import *
from tkinter.scrolledtext import *

page = Tk()
page.rowconfigure(1, weight=1)
page.columnconfigure(0, weight=1)
page.columnconfigure(6, weight=1)

lb_reports = Listbox(page, selectmode=SINGLE, font=('Arial', 12), width=20)
lb_reports.grid(row=1, column=0, columnspan=5, sticky=W + N + S + E, pady=5, padx=5)

st_test = ScrolledText(page, font=('Arial', 12), width=20)
st_test.grid(row=1, column=6, columnspan=5, sticky=W + N + S + E, pady=5, padx=5)

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