Как мне перекрыть виджеты с помощью менеджера геометрии пакета Tkinter? - PullRequest
2 голосов
/ 22 сентября 2008

Я хочу поместить Canvas с изображением в моем окне, а затем я хочу упаковать виджетов поверх него, чтобы Canvas выступал в качестве фона.

Возможно ли иметь два состояния для менеджера pack: одно для одного набора виджетов и другое для другого набора?

Ответы [ 4 ]

2 голосов
/ 22 сентября 2008

Ответ на ваш конкретный вопрос - нет. Вы не можете иметь два состояния или иным образом использовать два разных способа для одного и того же родителя.

Однако то, что я думаю, вы хотите сделать, просто. Используйте встроенные функции холста, чтобы создать элемент изображения, который является частью холста, а затем упакуйте вещи в холст, как если бы это была рамка.

Вы можете сделать то же самое, создав виджет метки с изображением, а затем упакуйте другие метки в метку.

Одним из преимуществ использования холста является то, что вы можете легко разбить изображение на части, чтобы заполнить весь холст повторяющимся фоновым изображением, чтобы по мере роста окна изображение продолжало заполнять окно (конечно, вы можете просто использовать достаточно большой оригинал изображение ...)

1 голос
/ 22 сентября 2008

... оказалось неработоспособным, потому что я хотел добавить к нему ярлыки и больше холстов, но не могу найти способ сделать их фон прозрачным

Если допустимо загрузить дополнительное расширение, взгляните на Tkzinc . С веб-сайта

Виджет Tkzinc (исторически называемый Zinc) очень похож на Tk Canvas в том, что они оба поддерживают структурированную графику. Как и Canvas, Tkzinc реализует элементы, используемые для отображения графических объектов. Этими элементами можно манипулировать, и с ними можно связывать привязки для реализации поведения взаимодействия. Но в отличие от Canvas, Tkzinc может структурировать элементы в иерархии, имеет поддержку масштабирования и поворота, можно настроить отсечение для поддеревьев иерархии элементов, поддерживает многоконтурные кривые. Он также обеспечивает расширенный рендеринг с помощью OpenGL, такой как цветовой градиент, сглаживание, прозрачность и элемент треугольников.

В настоящее время я использую его в проекте tcl и очень доволен результатами. Доступны расширения для tcl, perl и python.

1 голос
/ 22 сентября 2008

Я считаю, что ответ Брайана, вероятно, является лучшим общим решением. Однако вы также можете посмотреть на менеджер геометрии place . Менеджер геометрии place позволяет вам указать точный размер и положение виджета ... который может быстро утомить, но он выполнит свою работу.

0 голосов
/ 22 сентября 2008

Не без обмена местами между деревьями виджетов, что, я не думаю, можно сделать чисто с помощью Tk. Другие наборы инструментов могут сделать это немного более элегантно.

  • COM / VB / MFC может сделать это с помощью элемента управления ActiveX - вы можете скрыть / показать несколько элементов управления ActiveX в одном регионе. Любой из контейнеров позволит вам сделать это, поменяв ребенка. Если вы работаете с программой для Windows, вы можете выполнить ее следующим образом.
  • QT также позволит вам сделать это аналогичным образом.
  • GTK немного сложнее.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...