moin,
hab mich vergessen einzuloggen... naja ich bin jedenfalls lionking
bei dem programm, möchte ich, dass:
1. durch drücken der Taste >Enter< der button "ok" betätigt wird.
2. dass der cursor beim start des programms gleich in das erste eingabefeld springt und man ohne vorher mit der maus draufzuclicken eingaben tätigen kann.
so das erstmal, wie mache ich das? hab noch nix darüber gefunden...
und habt ihr sonst noch verbesserungsvorschläge?
danke schonmal!
achja, ich kann das programm nicht durch doppelclick auf das symbol ausführen, es kommt die cmd aber nicht die gui... nur wenn ich in idle bin funzt es mit F5....[/url]
>tkinter< problem...
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Also zu 2. verwende folgendes:
Gruß, mawe
Also zu 2. verwende folgendes:
Code: Alles auswählen
self.artentry.focus()
Schreib statt app.mainloop einfach root.mainloop(), dann funktioniertslionking16 hat geschrieben: achja, ich kann das programm nicht durch doppelclick auf das symbol ausführen, es kommt die cmd aber nicht die gui... nur wenn ich in idle bin funzt es mit F5....
Gruß, mawe
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi nochmal!
Gruß, mawe
lionking16 hat geschrieben: 1. durch drücken der Taste >Enter< der button "ok" betätigt wird.
Code: Alles auswählen
ok=Tkinter.Button(artnum, text="Ok", command = lambda: self.onok(self.artnr.get()))
root.bind('<Return>',lambda x:self.onok(self.artnr.get()))
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Irgendwo in __init__(). Auf jeden Fall unterlionking16 hat geschrieben: aber wo setze ich das "self.artentry.focus()" hin?
Code: Alles auswählen
self.artentry=Tkinter.Entry(artnum, textvariable = self.artnr)
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Bei mir funktioniert das
Gruß, mawe
Hast Du vielleicht die () vergessen? So sollte es aussehen:lionking hat geschrieben: hat leider nich funktioniert
Code: Alles auswählen
def main():
root = Tkinter.Tk()
app = Kasse(root)
app.pack()
root.mainloop()
Gruß, mawe
so nochwas:
ich möchte, das die artikelliste aus einer datei eingelesen wird und so dass ich sie weiterverwenden kann als liste in der variable self.art gespeichert wird, dazu muss ich den string aus der textdatei aber in die liste umwandel, wie mache ich das?
so funzt es nich:
wie dann?
ich möchte, das die artikelliste aus einer datei eingelesen wird und so dass ich sie weiterverwenden kann als liste in der variable self.art gespeichert wird, dazu muss ich den string aus der textdatei aber in die liste umwandel, wie mache ich das?
so funzt es nich:
Code: Alles auswählen
self.art=list(artfile.readlines())
HI. Das ist ja auch logisch, schließlich stehen die Daten alle als Strings in der Datei. Wie sie da genau drin stehen hab ich keine Ahnung, da wär eine Information mehr nicht schlecht... *aus der Nase zieh* da gibts halt zif Möglichkeiten, wie man das machen kann. Hier mal ein Beispiel mit csv:
mfg Milan
EDIT: Verbesserungen in Umwandlung, Dank an mawe
Code: Alles auswählen
import csv
def writelist(filename,datalist):
f=file(filename,"w")
writer=csv.writer(f)
writer.writerows(datalist)
f.close()
def readlist(filename):
f=file(filename,"r")
reader=csv.reader(f)
erg=list(reader)
#alle Einträge sind Strings !!! Die müssen noch konvertiert werden
#falls die Liste aus deinem Beispiel genommen wird, geht das hier, ansonsten bastel dir was
for row in erg:
for i in xrange(0,len(row),1):
try:
row[i]=float(row[i])
except ValueError:
pass
return erg
EDIT: Verbesserungen in Umwandlung, Dank an mawe
Zuletzt geändert von Milan am Samstag 21. August 2004, 20:40, insgesamt 4-mal geändert.
wie die daten drin stehen is mir egal, sie müssen per texteditor editierbar sein und vorher aus der liste gespeichert werden...
also ich wollte das so machen, dass wenn das programm beendet wird, die daten auch der liste abgespeichert werden und wenn das programm wieder gestartet wird werden sie wieder eingelesen und verarbeitet und am ende wieder abgespeichert in die selbe datei(überschrieben) usw...
also ich wollte das so machen, dass wenn das programm beendet wird, die daten auch der liste abgespeichert werden und wenn das programm wieder gestartet wird werden sie wieder eingelesen und verarbeitet und am ende wieder abgespeichert in die selbe datei(überschrieben) usw...
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi lionking,
wie ist denn die Artikelliste aufgebaut, als Liste von Dictionaries?
Du könntest sie auch mittels PyXO als xml-Datei speichern, wenn es sich um Builtintypen in der Liste handelt.
Hat den Vorteil, daß es eine xml-Datei erzeugt, die leicht zu editieren ist.
Ansonst müsstes Du schon ein bisschen verraten wie und welche Artikeldaten in der Liste abgelegt sind.
Gruß
Dookie
wie ist denn die Artikelliste aufgebaut, als Liste von Dictionaries?
Du könntest sie auch mittels PyXO als xml-Datei speichern, wenn es sich um Builtintypen in der Liste handelt.
Code: Alles auswählen
import PyXO
Artrikeldatei = "Artikelliste.xml"
...
def speichere_artikel(self):
PyXO.Object.save(Artikeldatei, self.art)
def lade_artikel(self):
self.art = PyXO.Object.load(Artikeldatei)
...
Ansonst müsstes Du schon ein bisschen verraten wie und welche Artikeldaten in der Liste abgelegt sind.
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi lionking!
Milan und Dookie haben Dir ja schon sehr gute Tipps (mit "pp" - schrecklich ) gegeben. Wenn Du es ganz einfach haben willst, könntest Du es so versuchen:
Artikeldatei (artdat.dat):
Gruß, mawe
Milan und Dookie haben Dir ja schon sehr gute Tipps (mit "pp" - schrecklich ) gegeben. Wenn Du es ganz einfach haben willst, könntest Du es so versuchen:
Artikeldatei (artdat.dat):
Code: Alles auswählen
Name Nummer Preis Pfand Verkaufte_heute Lagerbestand Ladenbestand
Cola 1.0 0.5 0.25 0.0 0.0 0.0
Kekse 2.0 1.0 0.0 0.0 0.0 0.0
Broetchen 3.0 0.75 0.0 0.0 0.0 0.0
Pfand 0.0 -0.25 0.0 0.0 0.0 0.0
Code: Alles auswählen
# einlesen
f = file("artdat.dat","r")
self.art = [x.split() for x in f.readlines()]
for i in xrange(0,len(self.art),1):
for j in xrange(0,len(self.art[i]),1):
try:
self.art[i][j] = float(self.art[i][j])
except: pass
# schreiben
f = file("artdat.dat","w")
for i in xrange(0,len(self.art),1):
for j in xrange(0,len(self.art[i]),1):
f.write("%s " % str(self.art[i][j]))
f.write("\n")
Hi. Das einlesen sollte wenn so aussehen, sonst gibts ne leere Liste (wegen des x.split()[0])
Ansonsten seh ich da keine Probleme, jetzt gibts 3 Möglichkeiten und das einbauen musst du schon selber machen. Am Anfang einmal einlesen und bei Bedarf speichern (nur ausführen davon) sollte dir ein leichtes sein. Alle drei sind auch im editor leicht zu bearbeiten, wobei ich allerdings CSV vorziehen würde Ist auch mit excel zu bearbeiten und macht nicht soviel zusätzlichen Speicherplatz weg wie XML...
Code: Alles auswählen
# einlesen
f = file("artdat.dat","r")
self.art = [x.split()[0] for x in f]
for i in self.art:
for j in xrange(0,len(i),1):
try:
i[j] = float(i[j])
except: pass
so ist die liste aufgebaut:
Code: Alles auswählen
self.art=[
['Name','nummer','preis','pfand','verkauftheute','lagerbestand','ladenbestand'],
['Cola', 1, 0.5, 0.25, 0, 0, 0],
['Kekse', 2, 1.00, 0, 0,0,0],
['Broetchen', 3, 0.75, 0, 0,0,0],
['pfand',0,-0.25,0,0,0,0],
]
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
@Milan:
Versteh nicht was Du meinst. Hast Du Deine Methode ausprobiert? Ich bekomm dann als self.art folgendes:
Ist glaub ich nicht das Gewünschte
Gruß, mawe
@Milan:
Versteh nicht was Du meinst. Hast Du Deine Methode ausprobiert? Ich bekomm dann als self.art folgendes:
Code: Alles auswählen
['Name', 'Cola', 'Kekse', 'Broetchen', 'Pfand']
Gruß, mawe