Seite 1 von 1

tkMessagebox als aktives Fenster

Verfasst: Dienstag 30. Mai 2006, 10:42
von tuner
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.

Verfasst: Dienstag 30. Mai 2006, 11:06
von Mawilo
Hallo tuner,

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

Code: Alles auswählen

widget.focus_set()
Stephan

Verfasst: Dienstag 30. Mai 2006, 18:51
von tuner
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()

Verfasst: Dienstag 30. Mai 2006, 19:52
von Mawilo
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.

Verfasst: Dienstag 30. Mai 2006, 20:03
von tuner
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.

Verfasst: Dienstag 30. Mai 2006, 20:17
von Andy
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]

Verfasst: Dienstag 30. Mai 2006, 20:27
von tuner
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.