我想开始使用tkinter GUI制作程序。
我在大学时学到了一点tkinter,但从那时起已经很长时间了,说实话,我没有保留任何关于它的知识。重新阅读tkinter上的文档之后,我确信这是没有希望的,因为我不确定我必须使用哪些tkinter类型才能使我的程序按照我的要求行事(主要是因为我正在尝试处理图像)
我的程序的最终(简化)目标是将游戏板作为背景图像(background.gif或其他)放置,并在这些图像之上,在用户点击该屏幕区域时放置另一个图像。 / p>
我尝试使用create_image,但出于某种原因,我无法让它工作。即使我确实让它发挥作用,我也不确定如何在tkinter上的另一个图像上绘制图像?
我想我的主要问题是:我如何制作它以便创建背景图像,还可以将小部件/其他图像放在图像画布的顶部?或者我应该使用标签/框架吗?
不起作用的实验代码(有谁知道为什么?)
import tkinter as tk
from PIL import Image, ImageTk
import os
class GUI:
def __init__(self):
self.root = tk.Tk()
self.root.resizable(width=tk.FALSE, height=tk.FALSE)
self.start_GUI();
self.root.mainloop();
def start_GUI(self):
self.canvas = tk.Canvas(master = self.root, width = 734, height = 429)
self.canvas.pack(expand = tk.YES, fill = tk.BOTH)
gif1 = tk.PhotoImage(file = 'background.gif')
self.canvas.create_image(0, 0, image = gif1)
if __name__ == '__main__':
rootstart = GUI();
答案 0 :(得分:0)
显示图像时出现问题的原因(我认为它们不可见)是gif1
是一个局部变量。一旦start_GUI
完成执行,gif1
超出范围,图像将被删除。所以你没有看到任何图像,因为无论如何都没有图像可见。您需要通过执行程序来保持对图像对象生命的引用。在您的示例中,简单的方法是使它们成为实例变量,例如
self.gif1 = tk.PhotoImage(file = 'background.gif')
self.canvas.create_image(0, 0, image = self.gif1)
要在顶部绘制新图像,您只需执行相同的操作,例如
self.gif2 = tk.PhotoImage(file = 'some_foreground_image.gif')
self.canvas.create_image(0, 0, image = self.gif2)