Jan-15-2024, 06:00 AM
Hi All - How can I remove the button frame in my code? I have tried a few examples I found, but have had no luck. I see one argument example for 'borderwidth=0' but does not seem to change anything. I am using a toggle button with images. Attached picture is what I have showing for my button. The image has rounded corners, so I want to remove the frame of the button completely. Thanks for any help with this.
import tkinter as tk from tkinter import * from tkinter import messagebox import requests import http.client import time import json path = "" SONOFF_Temp = 'http://192.168.0.130/cm?cmnd=status+10' sonoff_url = 'NOT_INIT' class RelayButton(tk.Button): """A button that toggles a relay""" def __init__(self, parent, url="", on_image=None, off_image=None, **kwargs): super().__init__(parent, image=off_image, command=self.toggle) self.url = url self._on = False self.on_image = on_image self.off_image = off_image self.label = Label(text="", bg="White", fg="Black", font=("Helvetica", 12)) self.label.place(x=10,y=15) self.update_clock() self.templabel = Label(text="temp info", bg="White", fg="Black", font=("Helvetica", 12)) self.templabel.place(x=10, y=40) #self.getTemp() self.master.configure(background="white") @property def on(self): """Return state of the relay""" return self._on @on.setter def on(self, on): """Set state of the relay""" self._on = on try: if on: requests.post(f"{self.url}cm?cmnd=Power On") self["image"] = self.on_image else: requests.post(f"{self.url}cm?cmnd=Power Off") self["image"] = self.off_image except: messagebox.showinfo("Error") def toggle(self): """Toggle state of the relay""" self.on = not self.on def update_clock(self): now = time.strftime("%I:%M:%S %p " + ' - ' + "%x") self.label.configure(text='Time/Date: ' + now) self.after(1000, self.update_clock) def getTemp(self): sonoff_url = SONOFF_Temp sonR1 = requests.get(sonoff_url) x = json.loads(sonR1.text) status = x["StatusSNS"] timestamp = status["Time"] device_names = list(status.keys())[1:-1] temp_units = status["TempUnit"] for name in device_names: device = status[name] #print(f'ID={name}, Temperature={device["Temperature"]} {temp_units}') self.templabel.configure(text='Living Room '+f'Temperature: {device["Temperature"]} {temp_units}') self.after(5000, self.getTemp) def new_button(name, url, parent, row, column, **kwargs): """Convenience functon that creates a RelayButton""" on_image = tk.PhotoImage(file=f"{path}{name}_on.png") off_image = tk.PhotoImage(file=f"{path}{name}_off.png") button = RelayButton(parent, url, on_image, off_image, **kwargs) button.grid(row=row, column=column, padx=70, pady=110) return button def main(): app = tk.Tk() app.title('Home Relay Control') buttons = [ #new_button('lvgRoom', "http://192.168.0.101/", app, 0, 0), new_button('frPorch', "http://192.168.0.130/", app, 0, 1) ] for b in buttons: b.on = False app.mainloop() if __name__ == "__main__": main()