【发布时间】:2021-07-23 00:14:45
【问题描述】:
我想更新存储在 red_smiley_1 标签中的图像。 我想定义我的方法'change_row_one',以便我可以使用 Label.configure() 方法来更新存储在此 Label 小部件中的图像。 我应该如何定义我的方法? 我已经包含了我当前的方法,这给我带来了问题。 谢谢。
class Cube(tk.Tk):
def __init__(self):
super().__init__()
self.title("John's GUI Cube Application")
self.geometry("300x180")
self.resizable(True,True)
container = ttk.Frame(self)
container.grid(padx=10,pady=10,sticky='EW')
cube_frame = CubeFrame(container).grid(row=0,column=0,sticky='NSEW')
class CubeFrame(ttk.Frame):
def __init__(self,container):
super().__init__(container)
self.red_smiley = ImageTk.PhotoImage(Image.open('./images/red_smile.png'))
self.white_smiley = ImageTk.PhotoImage(Image.open('./images/white_smile.png'))
self.yellow_smiley = ImageTk.PhotoImage(Image.open('./images/yellow_smile.png'))
# Red Smiley Image Labels
self.red_smiley_1 = ttk.Label(self,image=self.red_smiley).grid(row=0,column=0)
self.red_smiley_2 = ttk.Label(self,image=self.red_smiley).grid(row=0,column=1)
self.red_smiley_3 = ttk.Label(self,image=self.red_smiley).grid(row=0,column=2)
# Image Label Buttons
self.row_one_button = ttk.Button(self,text='Change Row 1',command=self.change_row_one).grid(row=0,column=3,sticky='WE')
self.row_two_button = ttk.Button(self,text='Change Row 2',command=self.change_row_two).grid(row=1,column=3,sticky='WE')
self.row_three_button = ttk.Button(self,text='Change Row 3',command=self.change_row_three).grid(row=2,column=3,sticky='WE')
# Change Row One Image Labels
def change_row_one(self):
new_image = ImageTk.PhotoImage(Image.open('./images/white_smile.png'))
self.red_smile_1.configure(image=new_image)
self.red_smile_1.image = new_image
【问题讨论】:
-
点击按钮你什么也没做,那它怎么改变图像呢?
-
我应该澄清一下,我正在尝试使用按钮单击来更新存储在标签“red_smiley_1”中的图像。我最初定义 'change_row_one' 方法的方法如下: def change_row_one(self): new_image = ImageTk.PhotoImage(Image.open('./images/white_smile.png')) self.red_smile_1.configure(image=new_image ) self.red_smile_1.image = new_image
-
如果您使用的是同一张 white_smiley 图像,则不必创建新变量
(new_image)。看看my answer
标签: python tkinter label project