PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tkinter



peeta
31-01-2005, 21:58
hallo
ich hab n ganz einfaches programm in python (soll mal n taschenrechner werden, für die schule), aber irgendwie klappt da was nicht.


#!/usr/share/python/

from Tkinter import *

class calc(Frame):
def __init__(self):
Frame.__init__(self)
self.master.title('calc')
self.grid()
self.mkcomps()
self.acht()
def mkcomps(self):
self.eing = Entry(self)
self.eing.grid(row=1,column=1,columnspan=3)

self.schluss = Button(self)
self.schluss['text']='quit'
self.schluss['command']=self.quith
self.schluss.grid(row=1,column=4)

self.sieben = Button(self)
self.sieben['text']='7'
self.sieben['command']=self.sieben
self.sieben.grid(row=2,column=1)

self.acht = Button(self)
self.acht['text']='8'
self.acht['command']=self.acht
self.acht.grid(row=2,column=2)

self.neun = Button(self)
self.neun['text']='9'
self.neun['command']=self.sieben
self.neun.grid(row=2,column=3)
def quith(self):
self.quit()
def sieben(self):
print 'sieben'
def acht(self):
print 'acht'

calcu = calc()
if __name__ == '__main__': calcu.mainloop()

der interpreter kann nämlich die funktion self.acht() in __init__ nicht finden
Fehler:
Traceback (most recent call last):
File "tk.py", line 42, in ?
calcu = calc()
File "tk.py", line 11, in __init__
self.acht()
AttributeError: Button instance has no __call__ method

befürchte dass ich entweder blind bin oder ich die grundlagen für oop in python nicht verstanden habe.
würde mich über schnelle hilfe freuen
peeta

Joghurt
01-02-2005, 01:25
Du definierst die Variable self.acht und "überschreibst" damit die Definition der Methode "acht". Nenne die Callbackfunktion einfach anders, z.B. acht_pressed.

Und nimm wxPython statt Tkinter :D

peeta
01-02-2005, 10:08
danke
noch ne frage:
warum is wxpy besser als tk
und läuft das auch unter linux oder is das windows spezifisch
peeta

Joghurt
01-02-2005, 11:16
Ist einfach Geschmackssache.

wxWidgets ist eine Cross-Platform-GUI, die das Look-and-Feel der jeweiligen Platform beibehält. Ein wxWidgets/wxPython Programm sieht unter Windows wie jedes Windows-Programm, unter Linux wie jedes GTK, und unter Mac wie jedes Mac-Programm aus.
Angeblich sollen neuere Tk-versionen dies auch haben, habe ich aber nicht ausprobiert.