Seite 1 von 1
widgets verstecken/anzeigen
Verfasst: Dienstag 21. August 2012, 15:19
von N2Ndesign
Moin, ich bin gerade dabei etwas zu basteln und stieß auf folgendes Problem:
- Wenn ich auf verschiedene Buttons klicke, werden die widgets die diese zur Anzeige bringen sollen übereinander dargestellt....
Zur Verdeutlichung ein Beispielcode, wie es grad bei mir aussieht:
Code: Alles auswählen
from tkinter import *
def sehen():
sehen=Label(master=fenster, text='sehen')
sehen.grid(row=0, column=0)
def hoeren():
hoeren=Label(master=fenster, text='hören')
hoeren.grid(row=0, column=1)
fenster=Tk()
fenster.geometry("100x100")
klick=Button(master=fenster, text='klick', command=sehen)
klick.grid(row=1, column=0)
klock=Button(master=fenster, text='klock', command=hoeren)
klock.grid(row=2, column=0)
fenster.mainloop()
Hier ist es nun so, dass die Wörter "sehen" und "hören" nebeneinander erscheinen, wenn man die Buttons drückt, ich aber möchte, dass das Wort "sehen" erscheint, wenn man "klick" drückt und das Wort "hören" wenn man "klock" drückt.
Ich bin blutiger Anfänger und vermute, dass ich den Code komplett umschreiben muss.
Tante Google brachte mich dann auf
grid_forget()
Aber wie ich das einbauen soll ist mir ein Rätsel, das ist leider auch nirgends so richtig beschrieben.
Danke für Tipps im Vorraus!
Re: widgets verstecken/anzeigen
Verfasst: Dienstag 21. August 2012, 16:32
von wuf
Hi N2Ndesign
Es gibt verschiedene Lösungsvarianten. Die grid_forget() Methode ist für deine Anwendung nicht nötig:
Code: Alles auswählen
from tkinter import *
def sehen():
#sehen=Label(master=fenster, text='sehen')
#sehen.grid(row=0, column=0)
text_var.set('sehen')
def hoeren():
#hoeren=Label(master=fenster, text='hören')
#hoeren.grid(row=0, column=1)
text_var.set('hören')
fenster=Tk()
fenster.geometry("100x100")
text_var = StringVar()
label = Label(fenster, textvariable=text_var)
label.grid(row=0, column=0)
klick=Button(master=fenster, text='klick', command=sehen)
klick.grid(row=1, column=0)
klock=Button(master=fenster, text='klock', command=hoeren)
klock.grid(row=2, column=0)
fenster.mainloop()
Gruß wuf

Re: widgets verstecken/anzeigen
Verfasst: Dienstag 21. August 2012, 17:33
von N2Ndesign
Hi wuf,
danke für die Antwort!
Nun, ich habe die Frage unpräzise gestellt. Nun erscheinen die Wörter "sehen" und "hören" ja an derselben Stelle.
Wenn aber das Ganze komplexer wird, stößt diese Lösung ja an ihre Probleme.
Mal ein besseres Beispiel um das zu verdeutlichen:
Code: Alles auswählen
from tkinter import *
def sehen():
sehen=Label(master=fenster, text='sehen')
sehen.grid(row=0, column=0)
schmecken=Entry(master=fenster)
schmecken.grid(row=0, column=1)
def hoeren():
hoeren=Label(master=fenster, text='hören')
hoeren.grid(row=0, column=1)
riechen=Text(master=fenster, width=10, height=5)
riechen.grid(row=0, column=2)
fenster=Tk()
fenster.geometry("350x200")
klick=Button(master=fenster, text='klick', command=sehen)
klick.grid(row=1, column=0)
klock=Button(master=fenster, text='klock', command=hoeren)
klock.grid(row=2, column=0)
fenster.mainloop()
Also es gibt verschiedene Widgets die im Fenster dargestellt werden sollen. Praktisch, den Inhalt von mehreren Fenstern dynamisch in einem Fenster darstellen, da möchte ich hin.
Grüße
Re: widgets verstecken/anzeigen
Verfasst: Dienstag 21. August 2012, 20:44
von wuf
OK N2Ndesign
Ich verstehe den Sinn deiner Anwendung noch nicht so ganz. Eventuell sehen da andere Forummitglieder besser was du damit erreichen möchtest.
Gruß wuf

Re: widgets verstecken/anzeigen
Verfasst: Mittwoch 22. August 2012, 15:35
von N2Ndesign
Gut, ich versuche es mal anders zu erklären.
Ich möchte für mein Unternehmen ein Programm schreiben, in welchem ich einsehen kann, was sich im Lager befindet und welche Aufträge ich bekommen habe. Also wenn man so will ein kleines ERP.
Da habe ich eben einen Button "Aufträge", der mir mehrere Entry- Felder, ein Beschreibungsfeld und einen "Speichern" Button sowie einen Datenbankinhalt in einer tkTable darstellen soll.
Ähnliches bei "Lager", nur hier völlig anders aufgebaut.
Genauer gesagt habe ich bei "Aufträge" 5 Entry und 1 Beschreibung und bei "Lager" 3 Entry und 1 Beschreibung. Deshalb überlagern sich die Felder.
Grüße
Re: widgets verstecken/anzeigen
Verfasst: Mittwoch 22. August 2012, 15:40
von BlackJack
@N2Ndesign: Kann es sein, dass Du eigentlich `ttk.Notebook` suchst?
Re: widgets verstecken/anzeigen
Verfasst: Mittwoch 22. August 2012, 21:18
von N2Ndesign
Ja stimmt, mit ttk.Notebook würde sich das Problem lösen lassen. Danke für den Tipp!
Grüße
Re: widgets verstecken/anzeigen
Verfasst: Mittwoch 5. September 2012, 22:35
von pixewakb
Hast du dir mal pyQt angesehen? Du kannst ansprechende Benutzeroberflächen mit dem Qt Designer zusammenklicken (wie bei Visual Basic) und entweder in Python Code umwandeln oder aber zur Laufzeit dynamisch laden. Deine Zielsetzung klingt eher nach einem komplexen GUI...
Ich habe mal ein sehr umfangreiches Programm in Tkinter geschrieben - ich weiß heute und merkte seinerzeit recht schnell, dass das keine gute Idee ist/war.