Seite 1 von 1

Wie kann man in einem Dict nach einem tk.Toplevel() suchen?

Verfasst: Sonntag 17. Mai 2020, 21:41
von DMD-OS
hi
in meinem dict:

Code: Alles auswählen

        self.widget_dict = {'WÄHLEN': [self.frm_waehlen],
                        'ERSTELLEN': [self.frm_inside, self.tpl_outside],
                        'SPEICHERN': [self.frm_speichern]}
ist self.tpl_outside ein tk.Toplevel(.....), alle anderen sind tk.Frame(...)'s.
wie kann ich in einem loop:

Code: Alles auswählen

        for text, widget in self.widget_dict.items():
            for frame in widget:
                # print(type(frame))
                if type(frame) == "<class 'tkinter.Toplevel'>":
                    print("yes")
                else:
                    print("no")
nach dem typ: Toplevel suchen?

Re: Wie kann man in einem Dict nach einem tk.Toplevel() suchen?

Verfasst: Montag 18. Mai 2020, 07:55
von peterpy
Hallo DMD-OS
schau mal hier https://anzeljg.github.io/rin2/book2/24 ... ersal.html
im Kapitel 26. Universal widget methods da findest Du die W.winfo... Methoden
Gruss
Peter

Re: Wie kann man in einem Dict nach einem tk.Toplevel() suchen?

Verfasst: Montag 18. Mai 2020, 08:21
von __deets__
Mit type oder besser isinstance :

Code: Alles auswählen

 if isinstance(thing, tk.TopLevel) 

Re: Wie kann man in einem Dict nach einem tk.Toplevel() suchen?

Verfasst: Montag 18. Mai 2020, 09:01
von Sirius3
@DMD-OS: Du solltest Dir die Frage stellen, warum tpl_outside ein TopLevel ist und die anderen Frames und warum Du das nicht vereinheitlichen kannst. Warum brauchst Du die Fallunterscheidung?

Re: Wie kann man in einem Dict nach einem tk.Toplevel() suchen?

Verfasst: Dienstag 19. Mai 2020, 12:30
von DMD-OS
weil self.frm_inside und self.tpl_outside dieselbe sache darstellen, die ich aber hin- und herschalten können will.
in beiden sind buttons drin. self.frm_inside ist als frame eingebaut, self.tpl_outside stellt die buttons als positionsveränderbares toplevel dar :)
@__deets__: THANKS, "isinstance" hab ich nicht mehr im auge gehabt. :)

Re: Wie kann man in einem Dict nach einem tk.Toplevel() suchen?

Verfasst: Dienstag 19. Mai 2020, 12:46
von Sirius3
Wie willst Du denn zwischen einem Frame und einem Top-Level hin und herschalten können?
Warum kannst Du nicht einfach einen Frame in Dein Top-Level packen?

Re: Wie kann man in einem Dict nach einem tk.Toplevel() suchen?

Verfasst: Dienstag 19. Mai 2020, 15:11
von DMD-OS
Nein, so:
Frame:
Bild
Toplevel:
Bild

Re: Wie kann man in einem Dict nach einem tk.Toplevel() suchen?

Verfasst: Mittwoch 20. Mai 2020, 06:59
von Sirius3
Das beantwortet noch nicht die Frage, warum Du überhaupt eine Unterscheidung brauchst. Was machst Du konkret anders, wenn Du einen Frame hast, als wenn Du ein TopLevel hast?