interaktives Tkinter fenster

Fragen zu Tkinter.
Antworten
powerslide
User
Beiträge: 51
Registriert: Freitag 10. Dezember 2004, 09:05
Wohnort: Erlangen
Kontaktdaten:

Hallo,

nachdem ich mein progrämmchen nun "fertig" habe wollte ich dem ganzen eine gui spendieren

sieht auch schon ganz gut aus.. aber es fehlen noch einige sachen.. und da komme ich einfach nicht weiter..

also hier erstmal mein tkinter code:

Code: Alles auswählen

from Tkinter import *
from tkFileDialog import *

def get_dir():
    path.insert(0,askdirectory())

def get_file():
    datei.insert(0,askopenfilename())

def can():
    old1 = path["state"]
    old2 = datei["state"]
    path["state"] = "normal"
    datei["state"] = "normal"                 
    path.delete(0,END)
    datei.delete(0,END)
    path["state"] = old1
    datei["state"] = old2

def sing():
    path["state"] = "disabled"
    direct["state"] = "disabled"
    datei["state"] = "normal"
    dat["state"] = "normal"
    set_out('Please select a file for conversion.', 'y')

def mult():
    path["state"] = "normal"
    direct["state"] = "normal"
    datei["state"] = "disabled"
    dat["state"] = "disabled"
    set_out('Please select a directory to make the rogram search for files.\nNote: ALL xml files will be converted!', 'y')

def set_out(text, opt):
    text = text + '\n--------------------------------------------------------------------------------------------------------------------------\\n'
    ausgabe["state"] = "normal"
    if (opt == 'y'):
        ausgabe.delete(1.0,END)
    ausgabe.insert(END, str(text))
    ausgabe["state"] = "disabled"

root=Tk()

frame=Frame(root)
frame.pack(expand=YES)

root.title('XML converter vol 1.0')

selectrahmen = Frame(root, relief="groove", borderwidth="2")
selectrahmen.pack(fill="x")

select1 = Frame(selectrahmen)
select1.pack(fill="x")
select2 = Frame(selectrahmen)
select2.pack(fill="x")

selectLab = Label(select1, text='Would you like to convert a single file or multiple files?')
selectLab.pack(side = "top", anchor="w")

v = IntVar()
Radiobutton(select2, text="single", variable=v, value=1, command=lambda: sing()).pack(side="left")
Radiobutton(select2, text="multiple", variable=v, value=2, command=lambda: mult()).pack(side="left")
v.set('1')
        
eingaberahmen = Frame(root, relief="groove", borderwidth="2")
eingaberahmen.pack(fill="x")

suchDatei = Label(eingaberahmen, text = 'File: ')
suchDatei.grid(row=1,column=1)

datei = Entry(eingaberahmen, width=45)
datei.grid(row=1,column=2)

dat = Button(eingaberahmen, text = 'search', command=lambda: get_file())
dat.grid(row=1,column=3)

suchPfad = Label(eingaberahmen, text = 'Directory: ')
suchPfad.grid(row=2,column=1)

path = Entry(eingaberahmen, width=45, state='disabled')
path.grid(row=2,column=2)

direct = Button(eingaberahmen, text = 'search',state='disabled', command=lambda: get_dir())
direct.grid(row=2,column=3)

eingaberahmen2 = Frame(root)
eingaberahmen2.pack()

cancel = Button(eingaberahmen2, text = 'Cancel', command=lambda: can())
cancel.pack(side='left')
ok = Button(eingaberahmen2, text = 'OK')
ok.pack(side='left')

ausgaberahmen = Frame(root, relief="groove", borderwidth="2")
ausgaberahmen.pack(fill="x")

ausgabeLab = Label(ausgaberahmen, text = 'Messagescreen').pack(side = "top", anchor="w")

ausgabe = Text(ausgaberahmen, width=61, height=5, state='disabled', bg='white')
ausgabe.pack()
set_out('Please select a file for conversion.', 'y')

root.mainloop()
das ganze macht nicht viel.. aber mehr muss es nicht machen.. naja okay.. es fehlt ein ausgabefenster

also .. was mir noch fehlt:

- es sollte standardmässig "single" angewählt sein
- wird "multiple" angewählt soll das "file" entry grau hinterlegt und gesperrt werden

- wird das ganze dann per ok gestartet sollen dann die print meldungen in einem entry oder so unterhalb des ok buttons ausgegeben werden.. wenn das geht..

könnt ihr mir da helfen?

wäre super

gruß

slide

EDIT mawe: hab mal die Einrückung im Code gerichtet
EDIT mawe: und gleich nochmal, weil ich beim ersten mal zu blöd dazu war
Zuletzt geändert von powerslide am Freitag 17. Dezember 2004, 14:47, insgesamt 3-mal geändert.
How many people can read hex if only you and dead people can read hex?

There are 10 types of people in the world: Those who understand binary, and those who don't...
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Also zu deinem ersten Problem: da sollte ein

Code: Alles auswählen

self.varKnopf.set(objekte['single'])   # oder
self.varKnopf.set('single')
genügen.

Gruß, mawe
powerslide
User
Beiträge: 51
Registriert: Freitag 10. Dezember 2004, 09:05
Wohnort: Erlangen
Kontaktdaten:

hello again,

so hab mal meinen code aktualisiert..
das mit den klassen hab ich ersma aufgegeben.. :?

naja dafür macht der code schonmal ziemlich viel von dem was ich will...

das einzige was mir noch fehlt.. ist das ausgabe-fenster..

dachte erst an ein entry, welches ich immer wieder aktualisiere ..
aber da das ja nur einzeilig ist ist das doof ..

also ein text objekt..

hab gedacht ich mach auch wieder viel mit dem state attribut.. d.h. state zuerst disablen..

dann um eine zeile hinzuzufügen state kurz auf normal setzen.. dann zeile ranhängen.. dann wieder disablen..

soweit schön und gut.. die theorie..

aber wie mach ich das.. also vorallem die sache mit dem zeile ranhängen und dann .. weil könnte ja durchaus mehr werden.. nen scrollbalken aktivieren ...

so ich mach derweil weiter und kümmere mich um die sicherheitsabfrage..

besten dank schonmal..

grüße

slide

[STATUS] okay also das mit den Zeilen anhängen hab ich geschafft.. gar nicht so schwer :)
How many people can read hex if only you and dead people can read hex?

There are 10 types of people in the world: Those who understand binary, and those who don't...
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Wenn Du ein Textfeld mit Scrollbalken haben willst, nimm doch gleich ein ScrolledText :wink:

Gruß, mawe
powerslide
User
Beiträge: 51
Registriert: Freitag 10. Dezember 2004, 09:05
Wohnort: Erlangen
Kontaktdaten:

*hust*

ja.. mal wieder super genial... :wink:

kann man das noch automatisch mitscrollen lassen?
How many people can read hex if only you and dead people can read hex?

There are 10 types of people in the world: Those who understand binary, and those who don't...
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Ja. Mit see. Kleines Beispiel:

Code: Alles auswählen

from Tkinter import *
from ScrolledText import ScrolledText
import time

def go():
	for i in range(100):
		st.insert(END,"%i\n" % i)
		st.see(END)
		time.sleep(0.5)
		root.update()

root = Tk()
st = ScrolledText(width=10,height=5)
st.pack()
Button(text="Go",command=go).pack()
root.mainloop()
Gruß, mawe
Antworten