我一直在努力获得一个简单的Tkinter画布,以使用create_image显示图像。我读过许多线程,说你需要在任何函数或类之外创建对象的引用,否则图像对象将被垃圾收集。不幸的是,我仍然无法让这个工作。下面是我的代码。忽略所有颜色 - 我用它们来说明框架和画布在窗口上的位置。
-Kirk
<table>
<tr>
<td>
BOD: @Html.RadioButton("HeadBOD", "Head")
</td>
<td>
Head:@Html.RadioButton("HeadBOD", "BOD")
</td>
<td></td>
<td></td>
</tr>
</table>
1) <div id="HeadDive"></div>
2) <div id="BODDive"></div>
答案 0 :(得分:4)
您正在使用test_image
来绘制cnv_hits
的图像。这是对的,但您忘记test_image
是hit_sel_click()
方法的本地方法;哪个东西意味着你的主程序无法使用它。
要解决此问题,您有两种选择:
test_image
hit_sel_click()
为global
test_image = ImageTk.PhotoImage(image)
之前运行hit_sel_click()
。Nota Bene:
对于第一种情况,您需要在root = tk.Tk()
之前运行hit_sel_click()
。
如果您选择第二个选项,则需要在root = tk.Tk()
test_image = ImageTk.PhotoImage(image)
如果您不这样做,您的程序将引发RuntimeError
例外。