Tkinter Проблемы Холста - PullRequest
1 голос
/ 05 июня 2011

Я пытаюсь изменить наложение виджетов Tkinter Canvas. В большинстве виджетов вы можете принудительно установить виджет над другими виджетами, используя метод lift . Однако, если я пытаюсь сделать то же самое на виджете Canvas, я получаю сообщение об ошибке.

Ошибка:

TypeError: tag_raise() got an unexpected keyword argument 'aboveThis'

Пример моей проблемы:

import Tkinter as Tk


root = Tk.Tk()

w, h = 200, 200

a = Tk.Canvas(root, bg='red', width=w, height=h)
a.grid(column=0, row=0)

b = Tk.Canvas(root, bg='blue', width=w, height=h)
b.grid(column=0, row=0)

a.lift(aboveThis=None)

root.mainloop()

Если я делаю то же самое с виджетами Frame, это работает.

Пример:

import Tkinter as Tk


root = Tk.Tk()

w, h = 200, 200

a = Tk.Frame(root, bg='red', width=w, height=h)
a.grid(column=0, row=0)

b = Tk.Frame(root, bg='blue', width=w, height=h)
b.grid(column=0, row=0)

a.lift(aboveThis=None)

root.mainloop()

Ответы [ 2 ]

3 голосов
/ 05 июня 2011

Метод canvas lift() является псевдонимом для tag_raise(), который используется для поднятия не самого холста, а объектов внутри холста.

Я нашел этот комментарий в исходном коде Tkinter.py:

# lower, tkraise/lift hide Misc.lower, Misc.tkraise/lift,
# so the preferred name for them is tag_lower, tag_raise
# (similar to tag_bind, and similar to the Text widget);
# unfortunately can't delete the old ones yet (maybe in 1.6)

Если вы замените a.lift(aboveThis=None) на Tk.Misc.lift(a, aboveThis=None), то виджет холста будет правильно отображен.

1 голос
/ 28 ноября 2016

Я пришел к этому вопросу, потому что на самом деле хотел реализовать эквивалент оператора tk, например

canvas-pathName raise tagOrId ?aboveThis?

, чтобы поднять отдельные элементы холста в определенную z-позицию.Для тех, кто интересуется тем же, я просто опубликую свое понимание (после небольшого почесывания головы), что это можно сделать в Python довольно легко:

canvasObject.tag_raise(tagOrId, tagOrId2)

Второй аргумент здесь просто включается вкомандная строка tk, а затем интерпретируется как значение «выше этого».

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