Tkinter create_image

时间:2016-05-04 06:05:54

标签: python tkinter tkinter-canvas

我一直在努力获得一个简单的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>

1 个答案:

答案 0 :(得分:4)

您正在使用test_image来绘制cnv_hits的图像。这是对的,但您忘记test_imagehit_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例外。