>tkinter< problem...

Fragen zu Tkinter.
lionking16

>tkinter< problem...

Beitragvon lionking16 » Mittwoch 11. August 2004, 17:12

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]
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Mittwoch 11. August 2004, 18:05

Hi!

Also zu 2. verwende folgendes:

Code: Alles auswählen

self.artentry.focus()


lionking16 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....

Schreib statt app.mainloop einfach root.mainloop(), dann funktionierts :wink:

Gruß, mawe
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Mittwoch 11. August 2004, 18:24

Hi nochmal!

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()))


Gruß, mawe
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

Beitragvon lionking » Mittwoch 11. August 2004, 18:37

vielen dank schonmal
aber wo setze ich das "self.artentry.focus()" hin?
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Mittwoch 11. August 2004, 18:47

lionking16 hat geschrieben:aber wo setze ich das "self.artentry.focus()" hin?

Irgendwo in __init__(). Auf jeden Fall unter

Code: Alles auswählen

self.artentry=Tkinter.Entry(artnum, textvariable = self.artnr)


Gruß, mawe
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

Beitragvon lionking » Mittwoch 11. August 2004, 19:11

ok danke
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

Beitragvon lionking » Samstag 14. August 2004, 17:07

Schreib statt app.mainloop einfach root.mainloop(), dann funktionierts

hat leider nich funktioniert :x
noch n vorschlag?
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Samstag 14. August 2004, 19:12

Hi!

lionking hat geschrieben:hat leider nich funktioniert

Hast Du vielleicht die () vergessen? So sollte es aussehen:

Code: Alles auswählen

def main():
    root = Tkinter.Tk()
    app = Kasse(root)
    app.pack()
    root.mainloop()

Bei mir funktioniert das :wink:

Gruß, mawe
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

Beitragvon lionking » Samstag 14. August 2004, 20:29

jupp jezz gehts, ich hatte die klammern vergessen :oops:

Danke
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

Beitragvon lionking » Samstag 21. August 2004, 15:14

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:

Code: Alles auswählen

self.art=list(artfile.readlines())


wie dann?
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Samstag 21. August 2004, 16:01

Hi. Ist doch alles in Ordnung oder? Ich seh jedenfalls keine Fehlermeldung :wink: :? ... readlines liefert übrigens schon eine Liste der Zeilen, allerdings ist da immer noch der Zeilenumsprung dran.
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

Beitragvon lionking » Samstag 21. August 2004, 16:54

ja klar ne fehlermeldung kommt nich, aber ich kann mit der liste nich so weiterarbeiten wie im oberen beispiel...
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Beitragvon Milan » Samstag 21. August 2004, 17:32

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* :wink: da gibts halt zif Möglichkeiten, wie man das machen kann. Hier mal ein Beispiel mit csv:

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


mfg Milan

EDIT: Verbesserungen in Umwandlung, Dank an mawe :wink:
Zuletzt geändert von Milan am Samstag 21. August 2004, 20:40, insgesamt 4-mal geändert.
lionking
User
Beiträge: 28
Registriert: Mittwoch 28. April 2004, 16:03

Beitragvon lionking » Samstag 21. August 2004, 18:26

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...
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Samstag 21. August 2004, 19:40

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.

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)
...

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

Code: Alles auswählen

#!/usr/bin/env python
import this

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder