我是新来的。我试图在画布上显示两个图像,但我做不到,我试图通过创建两个不同的文件来实现这一点。一个将包含后面的所有逻辑,另一个将处理gui。以下是我目前为止的代码:
文件1.py
from file2 import *
import tkinter as tk
import random
# global variables
w = 'initial'
class start_gui(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self,parent, *args, **kwargs)
# create canvas
self.canvas = tk.Canvas(parent, width=800, height=800, background="green")
self.canvas.pack()
c = Display(self.canvas)
c.current_play(w)
if __name__ == "__main__":
# create main window
root = tk.Tk()
root.geometry("800x800")
start_gui(root)
root.mainloop()
文件2.py
^{pr2}$这里的问题是,我创建的两个图像项没有显示在画布上,而只显示在矩形上。有人能帮我吗?在
PS:我使用的是pythonv3.4
问题是垃圾收集。您的
Display
对象存储在start_gui.__init__
内的局部变量中。一旦start_gui
被构造,这个对象就会被丢弃。图像是该对象的一个属性,因此它被垃圾回收。当图像对象被垃圾回收时,tkinter无法显示它。在简单的解决方案是保留对
Display
的永久引用:另一个解决方案:我们可以使
Display
从类tk.Canvas
继承相关问题 更多 >
编程相关推荐