как я могу изменить значок кнопки в Tkinter - PullRequest
0 голосов
/ 01 марта 2020

Я создаю gui в tkinter, в котором у меня есть кнопка. и я не хочу простую кнопку, я хочу значок вместо кнопки, и когда я нажимаю на кнопку, ее значок должен быть изменен. чтобы я мог выполнять функции 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()

1 Ответ

2 голосов
/ 01 марта 2020

Это работает:

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()

Редактировать:

Этот ответ работает путем сохранения текущего изображения в атрибуте image sound_btn и сравнения каждый раз кнопка нажата. sound_btn['image'] возвращает «идентификатор изображения» текущего изображения, а не ссылку на него.

...