我是 Tkinter 的新手,我正在研究用戶可以編輯的噪聲地形生成器。但是,當我按下按鈕時,我在畫布上的圖片沒有更新時遇到了問題。我的 tkinter 有兩個按鈕:生成(生成按鈕并將其顯示在我的畫布上)和重繪 (清除畫布上的影像)。問題是,如果我用圖片的同名檔案生成另一個影像并將其顯示到畫布( Generate ),它不會出現。克服這些問題的最佳方法是什么?
這是我的代碼:
self.Preview_Image = tk.Canvas(top, height=600, width=600)
self.Preview_Image.pack()
self.image = (Image.open("No_image.jpeg"))
self.resize_image = self.image.resize((600, 450), Image.ANTIALIAS)
self.img = ImageTk.PhotoImage(self.resize_image)
self.update_img = ImageTk.PhotoImage(Image.open("result_veg.jpeg"))
self.image_id = self.Preview_Image.create_image(-115, -50, image=self.img, anchor=tk.NW, )
self.Preview_Image.place(relx=0.017, rely=0.067, relheight=0.784
, relwidth=0.605)
該self.image是默認的影像,當我打開應用程式,而self.update_img是,當我生成按鈕,并在我的畫布上顯示它
紐扣 :
self.Generate_button = tk.Button(top, command=self.combineFunc(get_result,lambda:update_image(self)))
self.Generate_button.place(relx=0.667, rely=0.867, height=24, width=77)
self.Generate_button.configure(activebackground="#ececec",
activeforeground="#000000",
background="#d9d9d9",
disabledforeground="#a3a3a3",
foreground="#000000",
highlightbackground="#d9d9d9",
highlightcolor="black",
pady="0",
text='''Generate''',)
self.Refresh_button = tk.Button(top, command=lambda:refresh(self))
self.Refresh_button.place(relx=0.85, rely=0.867, height=24, width=67)
self.Refresh_button.configure(activebackground="#ececec",
activeforeground="#000000",
background="#d9d9d9",
disabledforeground="#a3a3a3",
foreground="#000000",
highlightbackground="#d9d9d9",
highlightcolor="black",
pady="0",
text='''Refresh''',)
我的按鈕的命令:
def update_image(self, *args , **kwargs):
self.Preview_Image.itemconfig(self.image_id, image = self.update_img)
def refresh(self, *args, **kwargs):
self.Preview_Image.delete(self.image_id)
print("refresh")
如果你想更詳細地描述我的代碼,在這里
uj5u.com熱心網友回復:
嘗試 :
def update_image(self, *args , **kwargs):
self.Preview_Image.itemconfig(self.image_id, image = self.update_img)
self.Preview_Image.image = self.update_img
參考這個鏈接
uj5u.com熱心網友回復:
更新result_veg.jpeg里面的影像檔案后get_call(),需要重新加載它并分配給self.update_img:
def update_image(self, *args, **kwargs):
# reload the updated result_veg.jpeg
self.update_img = ImageTk.PhotoImage(file='result_veg.jpeg')
self.Preview_Image.itemconfig(self.image_id, image=self.update_img)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/376327.html
上一篇:如何洗掉url中的 ?(姜戈)
