Seite 1 von 1
Messagebox
Verfasst: Dienstag 27. Dezember 2016, 12:45
von STJ
Ich habe einmal eine Frage.
Bin gerade am Programmieren eines aufwendigeren Programm und bin auf ein Problem mit der Messagebox gestoßen.
Wenn man mehrere Fenster öffnet und dann eine Messagebox aufmacht ist sie immer erst zu finden wenn ich alle bis auf das letzte Fenster geschlossen habe.
Darum Frage ich ob es einen Befehl gibt mit dem man die Messagebox immer in den Vordergrund geben kann ?
Re: Messagebox
Verfasst: Dienstag 27. Dezember 2016, 12:50
von Sirius3
@STJ: wie öffnest Du denn mehrere Fenster und wie erzeugst Du die Messagebox?
Re: Messagebox
Verfasst: Dienstag 27. Dezember 2016, 12:53
von BlackJack
@STJ: Die Messagebox sollte eigentlich vor dem Fenster erscheinen das als `parent` angegeben wurde. Ansonsten vor dem Hauptfenster.
Re: Messagebox
Verfasst: Mittwoch 28. Dezember 2016, 11:36
von STJ
Ich mache
from tkinter import messagebox
.
.
.
.
messagebox.showinfo("Message",string)
Ich möchte die Messagebox ja nicht nur vor dem Hauptfenster angezeigt haben sondern vor allen Fenstern wie funktioniert das ?
Re: Messagebox
Verfasst: Mittwoch 28. Dezember 2016, 15:29
von BlackJack
@STJ: Wie gesagt, man kann einer Messagebox das Fenster vor dem sie angezeigt werden soll als `parent`-Argument übergeben.
Re: Messagebox
Verfasst: Mittwoch 28. Dezember 2016, 22:06
von Sirius3
@STJ: bei mir wird die Messagebox über alle Fenster gelegt. Aber vielleicht ist das ja unter Windows anders:
Code: Alles auswählen
import tkinter
from tkinter import messagebox
root = tkinter.Tk()
many_windows = [tkinter.Toplevel(root) for _ in range(10)]
messagebox.showinfo("ich bin ganz oben.")
Re: Messagebox
Verfasst: Donnerstag 29. Dezember 2016, 10:08
von STJ
Wie kann ich die Messagebox an ein bestimmtes Fenster parenten ?
Re: Messagebox
Verfasst: Donnerstag 29. Dezember 2016, 10:58
von BlackJack
@STJ: In dem Du ein Schlüsselwortargument (`parent`) beim Erstellen angibst, und dem als Wert das Elternfenster übergibst.
Re: Messagebox
Verfasst: Donnerstag 29. Dezember 2016, 13:53
von STJ
Sorry,
Aber ich verstehe nicht wie ich parent als schlüsselwort übergeben kann
Bei mir wird die Messagebox in einem eigenen Programm erzeugt.
Re: Messagebox
Verfasst: Donnerstag 29. Dezember 2016, 14:38
von BlackJack
@STJ: Einfach beim Aufruf übergeben. Vielleicht zur Auffrischung noch mal den Abschnitt zu Schlüsselwort-Argumenten im Python-Tutorial lesen:
https://docs.python.org/2/tutorial/cont ... -arguments
Re: Messagebox
Verfasst: Freitag 30. Dezember 2016, 17:08
von Sirius3
@STJ: was meinst Du mit »in einem eigenen Programm«? Kannst Du etwas genauer erklären, was Du eigentlich machst?
Re: Messagebox
Verfasst: Freitag 15. Juni 2018, 08:29
von Streifenhase1
Hallo
Um nicht ein neues Thema auf zu machen, nutze ich gleich dieses.
Ich habe das Problem das wenn die Messagbox im Hintergrund öffnet, wenn ich das Programm im Rahmenlosen Vollbild laufen lasse.
Wenn ich das Programm im Fenstermodus laufen lasse funktioniert es das es im Vordergrund erscheint
Jemand einen Tip?
Re: Messagebox
Verfasst: Freitag 15. Juni 2018, 09:36
von wuf
Hi Streifenhase1
Wie funktioniert das?: (Nur unter Ubuntu 18.04 getestet)
Code: Alles auswählen
from functools import partial
import tkinter as tk
from tkinter import messagebox
APP_TITLE = "Messagebox on fullscreen"
APP_XPOS = 100
APP_YPOS = 100
APP_WIDTH = 350
APP_HEIGHT = 200
class Application(tk.Frame):
def __init__(self, master):
self.master = master
tk.Frame.__init__(self, master)
tk.Button(self, text="Beenden", command=self.master.destroy).pack(
side='left')
tk.Button(self, text="Show Messagebox", command=self.open_messagebox
).pack(side='left')
def open_messagebox(self):
messagebox.askyesno("Titel", "Möchtest du das Fenster öffnen ?")
def main():
app_win = tk.Tk()
app_win.title(APP_TITLE)
#app_win.geometry("+{}+{}".format(APP_XPOS, APP_YPOS))
app_win.geometry("{}x{}".format(APP_WIDTH, APP_HEIGHT))
app_win.attributes('-zoomed', True)
app = Application(app_win)
app.pack(expand=True)
app_win.mainloop()
if __name__ == '__main__':
main()
Gruss wuf
