Tkinter: створка PanedWindow вызывает разрыв, если я добавляю фреймы в PanedWindow

#python #macos #tkinter

#python #macos #tkinter

Вопрос:

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

В настоящее время я использую Python3 для этого, а также Tkinter версии 8.6.

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

 from tkinter import *
root = Tk()
m = PanedWindow(root, orient=HORIZONTAL, sashwidth=10)
rightF =  Frame(m)
leftF = Frame(m)
top = Label(leftF, text="lefgt pane", bg='blue')
bottom = Label(rightF, text="right pane", bg='red')
top.pack(fill=BOTH, expand=1)
bottom.pack(fill=BOTH, expand=1)
m.add(leftF)
m.add(rightF)

m.pack(fill=BOTH, expand=1)
mainloop()
  

Похоже, это происходит только тогда, когда я добавляю фреймы в PanedWindow. Кто-нибудь как-то обошел это? Кто-нибудь это видит? Я использую Mac OSX Mavericks, если это поможет.

Ответ №1:

Я никогда не ожидал скорости Tkinter.

Когда вы добавляете фрейм, ему приходится перерисовывать фрейм перед тем, как перерисовать метку, но у фрейма другой цвет фона, чем у метки — и вы это видите. Установите красный фон для правого фрейма, и вы не увидите проблемы.