[Tkinter-discuss] Buttonwidget, problem with callback-function!?

globalrev skanemupp at yahoo.se
Sat Apr 5 02:44:17 CEST 2008


in the following program i want "1" to appear in the upper "entry" when i
click the button "1".

so i will replace state=DISBALED with command=self.Display(xbtn) or
command=Display(xbtn). Display being a function that takes the pressed
buttons "value" and so outputs in the first entry the corresponding integer
or arithmetic.
ive tried this but i dont get ti to work.

is Display some sort of predefined function that im f***ing around with?

2nd code is the implementation of the Display-funcand corresponding
errormessages.


what is the problem here?



#! /usr/bin/env python
from Tkinter import *
import tkMessageBox

class GUIFramework(Frame):
    """This is the GUI"""
    
    def __init__(self,master=None):
        """Initialize yourself"""
        
        """Initialise the base class"""
        Frame.__init__(self,master)
        
        """Set the Window Title"""
        self.master.title("Calculator")
        
        """Display the main window"
        with a little bit of padding"""
        self.grid(padx=10,pady=10)
        self.CreateWidgets()
       
    def CreateWidgets(self):

        self.btnDisplay = Button(self, text="1", state=DISABLED)
        self.btnDisplay.grid(row=0, column=0, padx=5, pady=5)

        self.btnDisplay = Button(self, text="2", state=DISABLED)
        self.btnDisplay.grid(row=0, column=1, padx=5, pady=5)

        self.btnDisplay = Button(self, text="3", state=DISABLED)
        self.btnDisplay.grid(row=0, column=2, padx=5, pady=5)

        self.btnDisplay = Button(self, text="+", state=DISABLED)
        self.btnDisplay.grid(row=0, column=3, padx=5, pady=5)

        self.btnDisplay = Button(self, text="4", state=DISABLED)
        self.btnDisplay.grid(row=1, column=0, padx=5, pady=5)

        self.btnDisplay = Button(self, text="5", state=DISABLED)
        self.btnDisplay.grid(row=1, column=1, padx=5, pady=5)

        self.btnDisplay = Button(self, text="6", state=DISABLED)
        self.btnDisplay.grid(row=1, column=2, padx=5, pady=5)

        self.btnDisplay = Button(self, text="-", state=DISABLED)
        self.btnDisplay.grid(row=1, column=3, padx=5, pady=5)

        self.btnDisplay = Button(self, text="7", state=DISABLED)
        self.btnDisplay.grid(row=2, column=0, padx=5, pady=5)

        self.btnDisplay = Button(self, text="8", state=DISABLED)
        self.btnDisplay.grid(row=2, column=1, padx=5, pady=5)

        self.btnDisplay = Button(self, text="9", state=DISABLED)
        self.btnDisplay.grid(row=2, column=2, padx=5, pady=5)

        self.btnDisplay = Button(self, text="*", state=DISABLED)
        self.btnDisplay.grid(row=2, column=3, padx=5, pady=5)

        self.btnDisplay = Button(self, text="0", state=DISABLED)
        self.btnDisplay.grid(row=3, column=0, padx=5, pady=5)

        self.btnDisplay = Button(self, text="C", state=DISABLED)
        self.btnDisplay.grid(row=3, column=1, padx=5, pady=5)

        self.btnDisplay = Button(self, text="r", state=DISABLED)
        self.btnDisplay.grid(row=3, column=2, padx=5, pady=5)        

        self.btnDisplay = Button(self, text="/", state=DISABLED)
        self.btnDisplay.grid(row=3, column=3, padx=5, pady=5)        
        
    #def Display(self):
        
                
if __name__ == "__main__":
    guiFrame = GUIFramework()
    guiFrame.mainloop()







#! /usr/bin/env python
from Tkinter import *
import tkMessageBox

class GUIFramework(Frame):
    """This is the GUI"""
    
    def __init__(self,master=None):
        """Initialize yourself"""
        
        """Initialise the base class"""
        Frame.__init__(self,master)
        
        """Set the Window Title"""
        self.master.title("Calculator")
        
        """Display the main window"
        with a little bit of padding"""
        self.grid(padx=10,pady=10)
        self.CreateWidgets()
       
    def CreateWidgets(self):

        #self.pack_propagate(0)

        self.enText = Entry(self)
        self.enText.grid(row=0, column=0, columnspan=8, padx=5, pady=5)

        self.enText = Entry(self)
        self.enText.grid(row=1, column=0, columnspan=8, padx=5, pady=5)

        
        self.btnDisplay = Button(self, text="1", command=Display('1'))
        self.btnDisplay.grid(row=3, column=0, padx=5, pady=5)

        self.btnDisplay = Button(self, text="2", state=DISABLED)
        self.btnDisplay.grid(row=3, column=1, padx=5, pady=5)

        self.btnDisplay = Button(self, text="3", state=DISABLED)
        self.btnDisplay.grid(row=3, column=2, padx=5, pady=5)

        self.btnDisplay = Button(self, text="+", state=DISABLED)
        self.btnDisplay.grid(row=3, column=3, padx=5, pady=5)

        self.btnDisplay = Button(self, text="4", state=DISABLED)
        self.btnDisplay.grid(row=4, column=0, padx=5, pady=5)

        self.btnDisplay = Button(self, text="5", state=DISABLED)
        self.btnDisplay.grid(row=4, column=1, padx=5, pady=5)

        self.btnDisplay = Button(self, text="6", state=DISABLED)
        self.btnDisplay.grid(row=4, column=2, padx=5, pady=5)

        self.btnDisplay = Button(self, text="-", state=DISABLED)
        self.btnDisplay.grid(row=4, column=3, padx=5, pady=5)

        self.btnDisplay = Button(self, text="7", state=DISABLED)
        self.btnDisplay.grid(row=5, column=0, padx=5, pady=5)

        self.btnDisplay = Button(self, text="8", state=DISABLED)
        self.btnDisplay.grid(row=5, column=1, padx=5, pady=5)

        self.btnDisplay = Button(self, text="9", state=DISABLED)
        self.btnDisplay.grid(row=5, column=2, padx=5, pady=5)

        self.btnDisplay = Button(self, text="*", state=DISABLED)
        self.btnDisplay.grid(row=5, column=3, padx=5, pady=5)

        self.btnDisplay = Button(self, text="0", state=DISABLED)
        self.btnDisplay.grid(row=6, column=0, padx=5, pady=5)

        self.btnDisplay = Button(self, text="C", state=DISABLED)
        self.btnDisplay.grid(row=6, column=1, padx=5, pady=5)

        self.btnDisplay = Button(self, text="r", state=DISABLED)
        self.btnDisplay.grid(row=6, column=2, padx=5, pady=5)        

        self.btnDisplay = Button(self, text="/", state=DISABLED)
        self.btnDisplay.grid(row=6, column=3, padx=5, pady=5)
        #self.btnDisplay.pack(fill=BOTH, expand=1)
        
    def Display(xbtn):
        if xbtn==1:
            print 1
                
if __name__ == "__main__":
    guiFrame = GUIFramework()
    guiFrame.mainloop()





command=self.Display(xbtn)

Traceback (most recent call last):
  File "C:/Users/saftarn/Desktop/guiexperiments/defdonka.py", line 87, in
<module>
    guiFrame = GUIFramework()
  File "C:/Users/saftarn/Desktop/guiexperiments/defdonka.py", line 20, in
__init__
    self.CreateWidgets()
  File "C:/Users/saftarn/Desktop/guiexperiments/defdonka.py", line 33, in
CreateWidgets
    self.btnDisplay = Button(self, text="1", command=self.Display('1'))
TypeError: Display() takes exactly 1 argument (2 given)


command=Display(xbtn)

Traceback (most recent call last):
  File "C:/Users/saftarn/Desktop/guiexperiments/defdonka.py", line 87, in
<module>
    guiFrame = GUIFramework()
  File "C:/Users/saftarn/Desktop/guiexperiments/defdonka.py", line 20, in
__init__
    self.CreateWidgets()
  File "C:/Users/saftarn/Desktop/guiexperiments/defdonka.py", line 33, in
CreateWidgets
    self.btnDisplay = Button(self, text="1", command=Display('1'))
NameError: global name 'Display' is not defined
-- 
View this message in context: http://www.nabble.com/Buttonwidget%2C-problem-with-callback-function%21--tp16508071p16508071.html
Sent from the Python - tkinter-discuss mailing list archive at Nabble.com.



More information about the Tkinter-discuss mailing list