"I" ist die Klasse. Ich hab sie zuerst Iface genannt, da ich aber so viele Variablen habe, die an sie gebunden sind, habe ich den Namen abgekürzt.
edit: wieso kann ich eig. ältere Beiträge nicht mehr löschen?
GUI in Programm integrieren
http://klausweidinger.kl.funpic.de
-
- User
- Beiträge: 419
- Registriert: Sonntag 3. September 2006, 15:11
- Wohnort: in den weiten von NRW
- Kontaktdaten:
1. Check- und Radiobuttons und alle anderen TkWidgets die Variablen erwarten, erwarten tk-Variablen, also tk.StringVar, tk.IntVar, ...
In deinem Fall tk.StringVar.
2. wieso ist das ne klassenvariable?
3. -> machs über self!
4. kommt bestimmt gleich von jmd. anderem
@edit: ua. weil dann der Rest keinen sinn mehr ergibt.
In deinem Fall tk.StringVar.
2. wieso ist das ne klassenvariable?
3. -> machs über self!
4. kommt bestimmt gleich von jmd. anderem
@edit: ua. weil dann der Rest keinen sinn mehr ergibt.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Du kannst sie löschen, solange noch niemand drauf geantwortet hat. Wenn jemand drauf antwortet, zum Beispiel auf deinen Text bezug nimmt und du den Post dann löscht, dann steht der Antwortende doch ziemlich blöd da, wenn er auf etwas antwortet, was von dir gelöscht wurde und daher nicht mehr lesbar ist.klaus hat geschrieben:edit: wieso kann ich eig. ältere Beiträge nicht mehr löschen?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Dann solltest Du nicht so viele Namen daran binden, bzw. an die *Klasse* sowieso nicht. Da es zwei Fenster sind, könnte man das Ganze auch auf eine Klasse/Objekt pro Fenster aufteilen.
Zum eigentlichen Problem: Soweit ich weiss müssen die Argumente für `variable` vom Typ `Tkinter.StringVar`, `Tkinter.IntVar`, `Tkinter.DoubleVar` oder `Tkinter.BooleanVar` sein.
Zum eigentlichen Problem: Soweit ich weiss müssen die Argumente für `variable` vom Typ `Tkinter.StringVar`, `Tkinter.IntVar`, `Tkinter.DoubleVar` oder `Tkinter.BooleanVar` sein.
Ok, dann mach ich zwei Klassen.
Ich hab die Beiden Variablen in tk.topic und tk.modus umbenannt und es klappt trotzdem nicht. Wie müssen die Variablen genau heißen und wie kann ich dann später auf sie zugreifen.
(Tkinter mit "as tk" importiert)
Ich hab die Beiden Variablen in tk.topic und tk.modus umbenannt und es klappt trotzdem nicht. Wie müssen die Variablen genau heißen und wie kann ich dann später auf sie zugreifen.
(Tkinter mit "as tk" importiert)
http://klausweidinger.kl.funpic.de
-
- User
- Beiträge: 419
- Registriert: Sonntag 3. September 2006, 15:11
- Wohnort: in den weiten von NRW
- Kontaktdaten:
Du musst nicht die Namen ändern sondern ihnen tk-Variablen zuweisen:
Code: Alles auswählen
variablenname = tk.StringVar()
tk.Checkbutton(variable = variablenname)
@klaus: Nimm es mir nicht übel, aber lies dir mal bitte ein Tutorial durch und nicht nur das: Arbeite es auch von A-Z durch, damit du ein Verständnis für GUI Entwicklung bekommst! Das was ich bisher von dir hier sehe, lässt mich halt darauf schließen das dir das Allgemeine Verständnis fehlt.
Das ist mein erstes Tkinter-Projekt und ich habe mich davor noch nicht damit auseinandergesetz. Ich habe Tkinter für dieses Projekt extra "gelernt" und bin deshalb kein Profi.
Allerdings muss ich hier eins sagen: Wenn ich Probleme mit Tkinter hatte, habe ich immer zuerst im Internet gesucht, und meistens auf der Seite effbot.org geschaut. Da steht zwar v = IntVar(), aber nicht warum, und dass man das machen muss. Da ich jetzt weiß, wie man das machen muss, isses natürlich klar, aber wenn man als Neuling auf die Seite kommt, dann ist das halt sehr unauffällig. Da steht (in Textform) nur, dass der Wert von variable die Zugehörigkeit zu einer Buttongruppe signalisiert, aber nicht, dass dieser erst speziell erzeugt werden muss.
Außerdem: welche Dokumentation soll ich denn durcharbeiten. Die von effbot scheint mir nicht soviel Wert auf z.T. wichtige Einzelheiten zu legen, sondern eher einen groben Überblick über Tkinter zu geben.
@schlangenbeschwörer: Danke für den Tipp.
Allerdings muss ich hier eins sagen: Wenn ich Probleme mit Tkinter hatte, habe ich immer zuerst im Internet gesucht, und meistens auf der Seite effbot.org geschaut. Da steht zwar v = IntVar(), aber nicht warum, und dass man das machen muss. Da ich jetzt weiß, wie man das machen muss, isses natürlich klar, aber wenn man als Neuling auf die Seite kommt, dann ist das halt sehr unauffällig. Da steht (in Textform) nur, dass der Wert von variable die Zugehörigkeit zu einer Buttongruppe signalisiert, aber nicht, dass dieser erst speziell erzeugt werden muss.
Außerdem: welche Dokumentation soll ich denn durcharbeiten. Die von effbot scheint mir nicht soviel Wert auf z.T. wichtige Einzelheiten zu legen, sondern eher einen groben Überblick über Tkinter zu geben.
@schlangenbeschwörer: Danke für den Tipp.
http://klausweidinger.kl.funpic.de
-
- User
- Beiträge: 419
- Registriert: Sonntag 3. September 2006, 15:11
- Wohnort: in den weiten von NRW
- Kontaktdaten:
Hast du danach auch mal gesucht? ZB hier in der Forensuche?klaus hat geschrieben:Außerdem: welche Dokumentation soll ich denn durcharbeiten. Die von effbot scheint mir nicht soviel Wert auf z.T. wichtige Einzelheiten zu legen, sondern eher einen groben Überblick über Tkinter zu geben.
als Suchwort eignet sich sowas wie "Tkinter lernen"
Klaus: Wie gesagt der Post ist nicht böse gemeint, aber IMO würde ich halt erstmal die Tuts durcharbeiten und mich dann auf ein kleines Projekt stürzten. GUIs zu schreiben ist nicht gerade ein triviales Thema und kann auch schon bei recht kleinen Projekten ziemlich komplex werden.
IMO finde ich die Infos von hier http://wiki.python.org/moin/TkInter recht gut. Sind viele nützliche Links verlinkt die einem ein guten einstieg bieten und natürlich google mit "tkinter tutorials" füttern.
IMO finde ich die Infos von hier http://wiki.python.org/moin/TkInter recht gut. Sind viele nützliche Links verlinkt die einem ein guten einstieg bieten und natürlich google mit "tkinter tutorials" füttern.
Hi Leute, ich hab mal wieder ein Problem, und zwar, warum die Funktion collect in der Klasse Lib nicht die beiden Funktionsaufrufe durchführt, die in den letzten Zeile stehen. Ich habs auch schon mit Kleinschreibung probiert, aber es geht nicht.
Hier mal der Code:
Wäre nett, wenn mir jemand helfen könnte.
@poker: auch in dieser Dokumentation steht nicht explizit drin, dass man den Variablennamen erst erzeugen muss.
Hier mal der Code:
Code: Alles auswählen
##importe
class Iface:
question, solve, stat = "default", "default", "default"
points, counter, loop, switch = 0, 0, 0, 2
modus, m, dur = "abf", "", 0
index = [["Latein Vokabeltrainer", "", 0]]
def __init__(self, master):
## Erzeugung des Hauptfensters
def turn(self):
print "turn"
if self.modus == "lrn":
for vokabel in range(0, len(self.index)):
if vokabel[2] > 3:
self.index.pop(vokabel)
reduced += 1
if self.modus in ["abf", "lrn"]:
self.dur = len(self.index)
print self.dur
self.loop = 0
def correct(self, event):
## ...
def next(self, access = -1):
if self.switch != 0:
pass
else:
print "next"
if self.loop < self.dur:
if self.modus == "wdh":
access = randrange(0, len(self.index))
else:
access = self.loop
elif self.modus in ["abf", "wdh"]:
self.evaluate(self.points, self.counter)
else:
self.turn
if access > -1:
self.question, self.solve, self.stat = self.index[access]
self.label.config(text=self.question)
self.entry.delete(0, tk.END)
self.button.config(text="-------")
self.switch = 1
self.loop += 1
def evaluate(self, err, von):
## ...
class Lib:
voklist = []
topic, t = "rom", ""
von, bis = 0, 0
def __init__(self):
## Erzeugung des Auswahlfensters
def collect(self):
topic, start, ende = self.topic, self.von, self.bis
## Erzeugung von self.voklist
Iface.index = self.voklist
Iface.switch = 0
iface.button.config(text="Start")
Iface.next
Iface.turn
root = tk.Tk()
iface = Iface(root)
library = Lib()
root.mainloop()
@poker: auch in dieser Dokumentation steht nicht explizit drin, dass man den Variablennamen erst erzeugen muss.
http://klausweidinger.kl.funpic.de
-
- User
- Beiträge: 419
- Registriert: Sonntag 3. September 2006, 15:11
- Wohnort: in den weiten von NRW
- Kontaktdaten:
Das ist das Gegenteil von dem hier
Da du die Methoden nicht verarbeiten sondern aufrufen willst, muss du das schon sagen, und zwar dadurch, das du da zwei klammern hinterpappst, wie du es in allen anderen Fällen auch getan hast
Da du die Methoden nicht verarbeiten sondern aufrufen willst, muss du das schon sagen, und zwar dadurch, das du da zwei klammern hinterpappst, wie du es in allen anderen Fällen auch getan hast
Danke.
Ich habe mal wieder ein Problem: Die reset-Funktion macht noch nicht das was sie soll. Wenn man "n" eingibt, soll sich die Anwendung schließen, bei "j" soll die gleiche Abfrage nochmal wiederholt werden, und bei "a" soll das Auswahlmenü nochmal aufgehen, die anderen Variablen aber auf die Ursprungswerte zurückgesetzt werden.
Außerdem habe ich ein Problem mit der Codierung (bei Umlauten). Pyscripter bringt immer folgende Warnung.
Weil der Code mitlerweile etwas länger ist (200 Zeilen), hab ich ihn ausgelagert: http://paste.pocoo.org/show/8411/
Ich habe mal wieder ein Problem: Die reset-Funktion macht noch nicht das was sie soll. Wenn man "n" eingibt, soll sich die Anwendung schließen, bei "j" soll die gleiche Abfrage nochmal wiederholt werden, und bei "a" soll das Auswahlmenü nochmal aufgehen, die anderen Variablen aber auf die Ursprungswerte zurückgesetzt werden.
Außerdem habe ich ein Problem mit der Codierung (bei Umlauten). Pyscripter bringt immer folgende Warnung.
Code: Alles auswählen
C:\Py4Kids\mylib\iface3.py:47: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
if answer in self.solve.split(", "):
http://klausweidinger.kl.funpic.de