Я замечаю довольно странную ошибку с tkinter, и мне интересно, если это потому, что есть что-то в том, как питон взаимодействует с tcl, по крайней мере, в Win32.
Здесь у меня есть супер простая программа, которая отображает изображение в формате GIF. Работает отлично.
from Tkinter import *
canvas = Canvas(width=300, height=300, bg='white')
canvas.pack()
photo=PhotoImage(file=sys.argv[1])
canvas.create_image(0, 0, image=photo, anchor=NW) # embed a photo
print canvas
print photo
mainloop( )
Теперь я немного изменил программу, чтобы редактировать объект Canvas из функции. На этот раз я получаю чистый холст.
# demo all basic canvas interfaces
from Tkinter import *
canvas = Canvas(width=300, height=300, bg='white')
canvas.pack()
def set_canvas(cv):
photo=PhotoImage(file=sys.argv[1])
cv.create_image(0, 0, image=photo, anchor=NW) # embed a photo
print cv
print photo
set_canvas(canvas)
mainloop( )
Единственное различие между ними состоит в том, что в одном объекте canvas передается функции, а не используется напрямую. Оба оператора печати возвращают идентичные результаты. Мне интересно, возможно, есть какая-то поломка в объектной модели на уровне tcl / python.
Есть мысли, ребята?
Спасибо,
/ YGA