Tkinter ausgabe immer im Vordergrund

Fragen zu Tkinter.
Antworten
timm4444
User
Beiträge: 51
Registriert: Samstag 1. August 2020, 14:11

Hallo Leute, ich habe eine Frage, und zwar habe ich ein Programm, dass mit folgendem Code immer Vordergrund läuft:

Code: Alles auswählen

root.attributes("-topmost", True)
.


Meine Problem ist, dass ich ein anderes Fenster(gemacht mit Turtle) per Button öffnen möchte(Button ist schon da) und ich nicht möchte, dass es automatisch zurückgeschoben wird(andere Programme jedoch schon).


Gibt es vielleicht einen Befehl der ds Fenster stärker in den Vordergrund stellt?
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

Hallo timm4444 ,
ohne Code muss ich in die Kristallkugel schauen.
Diese zeigt mir zwei Möglichkeiten:
Du erstellst als zweites Fenster ein Toplevel Fenster, oder Du erstellst ein Kindfenster.
Also ich vermute Du suchst so etwas:

Code: Alles auswählen

import tkinter as tk
from functools import partial

def main():
    root=tk.Tk()
    tk.Label(root, width=30, text="Das\ngrosse\nHauptfenster",
             bg="green", height=20, font=('helvetica', '24')).pack()    
    root.attributes("-topmost", True)    
    tk.Button(root, text="Zeige ein\nweiters\nFenster",
              command=partial(neues_fenster, root)).pack(side='right')
    tk.Button(root, text="Mach mir ein\nKind-\nFenster",
              command=partial(kind_fenster, root)).pack(side='left')
    root.mainloop()

def neues_fenster(root):
    root.update_idletasks()
    root_geometry = root.winfo_geometry()
    root_daten = root_geometry.split('+')    
    root_x = root_daten[1]
    root_y = root_daten[2]
    noch_ein_fenster = tk.Toplevel()     
    noch_ein_fenster_geometry = "300x200+{}+{}".format(root_x, root_y)
    noch_ein_fenster.geometry(noch_ein_fenster_geometry)
    root.attributes("-topmost", False)
    text = "NOCH EIN FENSTER\n\nmit den Geometriedaten:\n{}\n\
lösche mich\nund ich bleibe\nnoch für 5 Sekunden\n\
versteckt erhalten.".format(noch_ein_fenster_geometry)
    tk.Label(noch_ein_fenster, text=text, bg="yellow", width=30,
             font=('helvetica', '16')).pack()
    
    noch_ein_fenster.protocol("WM_DELETE_WINDOW",
                              partial(hauptfenster_vordergrund, root,
                                      noch_ein_fenster))
def kind_fenster(root):
    rahmen = tk.Frame(root)
    rahmen.pack()
    text = "Ich bin ein Kind von root\nund bleibe\nim Vordergrund"
    tk.Label(rahmen, text=text, bg="lightyellow").pack()
Gruss Peter
timm4444
User
Beiträge: 51
Registriert: Samstag 1. August 2020, 14:11

Danke für die Antwort.
So etwas habe ich gesucht .:-)
Antworten