为什么通过调用另一个模块的函数来显示来自不同模块中不同 GUI 的图像时出现问题?



我试图制作一个模块,在其中我做了一个功能,它只是在GUI中读取和显示图像。然后我做了另一个模块,当单击按钮时调用该函数。按钮给我错误。

#module code:
from tkinter import *
class disp:
def __init__(self):
root1.geometry("400x500")
image = PhotoImage(file = 'png2.png')
Label(root1,image=image).pack()
root1.mainloop()

#main code:
from tkinter import *
import testimg as ti
def click():
ti.disp()
root = Tk()
Button(text = 'Click me',command=click).pack()
root.mainloop()

在你的类disp中,你把master作为root1,而在主代码中,你已经将Tk((定义为root。这意味着 root1 不是窗口,因此具有 root1 主节点的标签没有地方打包自己。

您还需要删除 root1.mainloop((,因为它是无用的,并且由于 root1 没有 Tk(( 而导致错误。这就像尝试循环 while 语句而不键入 while。这会产生错误。

以下修改后的代码基于您的:

#module code:
from tkinter import *
class disp:
def __init__(self):
root1 = Tk()
root1.geometry("400x500")
image = PhotoImage(master=root1, file='png2.png') # set master to root1
Label(root1, image=image).pack()
root1.mainloop()

但是使用多个Tk()实例并不是一个好的设计。

最新更新