tkMessagebox als aktives Fenster

Fragen zu Tkinter.
Antworten
tuner
User
Beiträge: 32
Registriert: Sonntag 23. April 2006, 22:17

hy,

ich hab in meinem tool ein paar messageboxes eingebaut.
das problem ist, das diese per default inaktiv geöffntet werden.

ich würde aber gern per 'enter' einfach bestätigen...

wie kann man das einrichten, dass das message-Window gleich aktiviert wird?

gruss.
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Hallo tuner,

setze den Focus drauf. Dann sollte das Fenster gleich aktiv sein.

Code: Alles auswählen

widget.focus_set()
Stephan
tuner
User
Beiträge: 32
Registriert: Sonntag 23. April 2006, 22:17

Schon, aber tkMessageBox hat diese Option scheints nicht:

Code: Alles auswählen

AttributeError: 'str' object has no attribute 'focus_set'
snip:

Code: Alles auswählen

         if (name==""):
            tkMess=tkMessageBox.showinfo("", "Keine Titel!")
            tkMess.focus_set()
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Sorry, aber ich dachte, du hast ein selbstgebasteltes Fenster gemeint. Die MessageBoxen habe so etwas nicht. bei mir bekommen die aber auch automatisch den Focus.
tuner
User
Beiträge: 32
Registriert: Sonntag 23. April 2006, 22:17

hmm,

das Problem ist glaub, dass es meinem (main)-widget zugewiesen wird.
ich oeffne aber in dem widget ein weiteres.

also so etwas wie

Code: Alles auswählen

winObj=Tk()
...
winObj.insert=Tk()
...
dann wird das wohl winObj zugeordnet. kann ich das ändern?

gruss.
Andy
User
Beiträge: 196
Registriert: Sonntag 1. Januar 2006, 20:12
Wohnort: aus dem hohen Norden....

Hallo tuner,

wenn Du in deinem Widget ein Menü hast und hier eben halt auch
MessageBoxen hast, dann ruft´s Du diese normalerweise direkt auf.
Es ist aktiv und Du kanst mit Enter auch bestätigen:



Code: Alles auswählen

def info (self):
        if tkMessageBox.showinfo ('Info',
                                  'irgendein Text'):
            self.fenster.destroy()
Gruss Andy[/code]
tuner
User
Beiträge: 32
Registriert: Sonntag 23. April 2006, 22:17

langsam schnall ich's. (ist mein erstes python-prog).

also mal das ganze:

Code: Alles auswählen

   winObj.vidoeList.bind('<ButtonRelease-2>',winObj.insertModus)
...
   def insertModus(winObj,event):

      def newDBEntrySubmit(event=None):
         if (name==""):
            tkMess=tkMessageBox.showinfo("", "Keine Titel!")
      winObj.insertView=Tk()
      winObj.insertView.oke=Button(winObj.insertView.okeFrame,text='Ok',width=6, command=newDBEntrySubmit)
ich glaub das problem ist, dass ich diese funktion(en) nicht als global definiert hab (newDBEntrySubmit).

gruss, toni.
Antworten