Python Tkinter - прокручиваемый холст, содержащий расширяемые виджеты - PullRequest
1 голос
/ 22 февраля 2011

Я использую Python Tkinter и хочу разместить переменное количество виджетов текстового поля в рамке или холсте.Текстовые поля располагаются вертикально вниз по фрейму, поэтому первое из них находится сверху, второе находится ниже и т. Д. У меня могут быть все виджеты для кнопок, списков и т. Д. В «левой части» графического интерфейса, в то время как«Правый раздел» будет содержать только виджеты текстового поля.Я хочу, чтобы виджеты с текстовым полем расширялись по горизонтали, когда главное окно развернуто, но из-за переменного числа этих виджетов «правая часть», содержащая текстовые поля, также должна иметь возможность вертикальной прокрутки, чтобы просмотреть их все.

В настоящее время я использую Canvas.create_window, чтобы добавить переменное число текстовых полей на холст, и хотя я могу прокручивать холст, чтобы просмотреть все текстовые поля, они не расширяются по горизонтали при изменении размера окна.У меня есть альтернативный графический интерфейс, который использует фрейм для «правой части», который позволяет горизонтальным расширениям виджетов, но если слишком много упаковано, я не могу прокрутить фрейм, чтобы увидеть дополнительные текстовые поля, потому что у меня не может быть прокруткибар привязан к раме.

Есть ли способ обойти этот компромисс?

1 Ответ

0 голосов
/ 22 февраля 2011

Решение довольно простое: привязка к событию <Configure> холста - это вызовет ваш обратный вызов при каждом изменении размера виджета холста.Затем вам просто нужно получить ширину холста и использовать ее для итеративного изменения размера всех встроенных окон.

...