Gianni Spear Gianni Spear - 3 months ago 35
Python Question

Python method in tkinter that the button stays pressed until a different comand

I am trying to find a method in tkinter that the button stars stays pressed until i press strop button.

from Tkinter import *
import tkMessageBox


class MainWindow(Frame):
def __init__(self):
Frame.__init__(self)
self.master.title("input")
self.master.minsize(250, 150)
self.grid(sticky=E+W+N+S)

top=self.winfo_toplevel()
top.rowconfigure(0, weight=1)
top.columnconfigure(0, weight=1)

for i in range(2):self.rowconfigure(i, weight=1)
self.columnconfigure(1, weight=1)

self.button0 = Button(self, text="Start", command=self.save, activeforeground="red")
self.button0.grid(row=0, column=0, columnspan=2, pady=2, padx=2, sticky=E+W+N+S)

self.button1 = Button(self, text="Stop", command=self.stop, activeforeground="red")
self.button1.grid(row=1, column=0, columnspan=2, pady=2, padx=2, sticky=E+W+N+S)

def save(self):
pass

def stop(self):
pass


if __name__=="__main__":
d=MainWindow()
d.mainloop()

Answer

So you can set the relief of the button using its config, this makes it look like it is pressed.

def save(self):
    self.button0.config(relief=SUNKEN)
    # if you also want to disable it do:
    # self.button0.config(state=tk.DISABLED)
    #...

def stop(self):
    self.button0.config(relief=RAISED)
    # if it was disabled above, then here do:
    # self.button0.config(state=tk.ACTIVE)
    #...

EDIT

This doesn't work on Mac OSx apparently. This link shows how in should look: http://www.tutorialspoint.com/python/tk_relief.htm