【问题标题】:how can i change the button icon in tkinter如何更改 tkinter 中的按钮图标
【发布时间】:2020-06-13 23:51:33
【问题描述】:

我正在 tkinter 中创建一个 gui,其中有一个按钮。我不想要一个简单的按钮,我想要一个图标而不是一个按钮,当我点击一个按钮时,它的图标应该会改变。 这样我就可以使用同一个按钮执行 start() 和 stop() 功能。

import tkinter as tk
from tkinter import *
from PIL import Image, ImageTk
root = tk.Tk()
def change_i():
        if sound_btn[image] == icon:
            #start_recording()

            sound_btn.config(image=icon2)
        else:
            #stop_recording()

            sound_btn.config(image=icon)

icon = PhotoImage(file='dh.png')
icon2 = PhotoImage(file='stop.png')

sound_btn = tk.Button(frame, image=icon, width=70,height=60,relief=FLAT ,command=change_i )
sound_btn.grid(row=0, column=1)
root.mainloop()

【问题讨论】:

  • sound_btn.config(image=icon2)sound_btn.config(image=icon) 有效吗?我想你的意思是传递变量而不是字符串......
  • @EdWard 不,它不起作用。代码更新

标签: python-3.x user-interface button tkinter


【解决方案1】:

这行得通:

import tkinter as tk
from tkinter import *
from PIL import Image, ImageTk
root = tk.Tk()
def change_i():
    if sound_btn.image == icon:
        #start_recording()

        sound_btn.config(image=icon2)
        sound_btn.image = icon2
    else:
        #stop_recording()

        sound_btn.config(image=icon)
        sound_btn.image = icon

icon = PhotoImage(file='dh.png')
icon2 = PhotoImage(file='stop.png')

sound_btn = tk.Button(root, image=icon, width=70,height=60,relief=FLAT ,command=change_i )
sound_btn.image = icon
sound_btn.grid(row=0, column=1)
root.mainloop()

编辑:

此答案通过将当前图像保存在sound_btnimage 属性中,并在每次单击按钮时进行比较。 sound_btn['image'] 返回当前图像的“图像 id”,而不是对它的引用。

【讨论】:

  • 如果您添加一两句话来解释您所做的不同之处,这个答案会更好。否则,我们必须逐行逐字符地将您的代码与原始代码进行比较。
猜你喜欢
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多