Dec-04-2020, 09:48 AM
(Dec-04-2020, 09:33 AM)buran Wrote: can you post minimal reproducible example and the full traceback you get?Here is custom Button:
from tkinter import * from tkinter.font import Font import Utils.Constant as Constant from time import * from View.Widget.Widget import Widget class ButtonWidget(Widget): """description of class""" def __init__(self, parent, buttonText, buttonWidth, buttonHeight): Widget.__init__(self, parent) self.text = StringVar() self.text.set(buttonText) self.enabled = True self.clicked = False self.buttonFont = Font(family=Constant.FontFamily, size=Constant.FontSmallSize) self.pixelVirtual = PhotoImage(width=1, height=1) self.border = Frame(self, highlightbackground=Constant.LightBlue, highlightcolor=Constant.LightBlue, highlightthickness=1) self.button = Button(self.border, relief=FLAT, textvariable=self.text, width=buttonWidth, height=buttonHeight, cursor="hand2", background=Constant.White, foreground=Constant.LightBlue, font=self.buttonFont, image=self.pixelVirtual, compound="c") self.button.bind("<ButtonPress>", self.onPress) self.button.bind("<ButtonRelease>", self.onRelease) self.button.pack(expand=True, fill='both') self.border.pack() def getTkWidget(self): return self.button def setText(self, buttonText): self.text.set(buttonText) def onPress(self, event): if self.enabled: self.border.config(highlightbackground=Constant.LightBlue) def onRelease(self, event): if self.enabled: self.border.config(highlightbackground=Constant.LightBlue) self.button.config(foreground=Constant.LightBlue) def enable(self): self.enabled = True self.button.configure(state=NORMAL) self.border.configure(highlightbackground=Constant.LightBlue, highlightcolor=Constant.LightBlue) def disable(self): self.enabled = False self.button.configure(state=DISABLED) self.border.configure(highlightbackground=Constant.Disabled, highlightcolor=Constant.Disabled) def setClicked(self, isClicked): self.clicked = isClickedHere is how I define button and try to disable it:
MyButton = ButtonWidget(self, "Apply", buttonWidth=40, buttonHeight=15) MyButton.config(state='disabled')And here is output:
Error:Traceback (most recent call last):
File "D:\DATA_PYE\python_source_SpectraMon\Main.py", line 20, in <module>
mainWindow = MainWindowView(root)
File "D:\DATA_PYE\python_source_SpectraMon\View\MainWindowView.py", line 44, in __init__
self.createView(parent)
File "D:\DATA_PYE\python_source_SpectraMon\View\MainWindowView.py", line 66, in createView
self.createPages()
File "D:\DATA_PYE\python_source_SpectraMon\View\MainWindowView.py", line 152, in createPages
self.monitorPage = MonitorView(self.contentFrame)
File "D:\DATA_PYE\python_source_SpectraMon\View\MonitorView.py", line 43, in __init__
self.createView()
File "D:\DATA_PYE\python_source_SpectraMon\View\MonitorView.py", line 110, in createView
self.createMonitorFrame()
File "D:\DATA_PYE\python_source_SpectraMon\View\MonitorView.py", line 130, in createMonitorFrame
self.createLoopsStatesFrame()
File "D:\DATA_PYE\python_source_SpectraMon\View\MonitorView.py", line 382, in createLoopsStatesFrame
MyButton.config(state='disabled')
File "C:\Users\user1\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1639, in configure
return self._configure('configure', cnf, kw)
File "C:\Users\user1\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1629, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: unknown option "-state"