OVH Cloud OVH Cloud

Centrer une boite de dialogue sous tkinter

1 réponse
Avatar
StepH
Salut à tous,

J'ai trouver pas mal de script disant/montrant comment faire, mais rien ne
semble marcher totalement.

Sous tkinter, ce souhaite afficher une boite de dialogue (non resizeable,
sans icone "à gauche", avec la case pour fermer la dlg à droite) au centre
de l'écran.

Quelqu'un a-t-il déjà résolu ce genre de prob. ?

Merci d'avance.

Stéphane

1 réponse

Avatar
StepH
Salut à tous,

J'ai trouver pas mal de script disant/montrant comment faire, mais rien ne
semble marcher totalement.

Sous tkinter, ce souhaite afficher une boite de dialogue (non resizeable,
sans icone "à gauche", avec la case pour fermer la dlg à droite) au centre
de l'écran.

Quelqu'un a-t-il déjà résolu ce genre de prob. ?

Merci d'avance.

Stéphane




Il semble que ceci fonctionne sous XP avec Python 2.4.2 :

###############################################################################
# HDialog
#####################################################################
###############################################################################
class HDialog( tk.Toplevel ):
"""
"""
#--------------------------------------------------------------------------
def __init__( self,
parent,
title=None ):
"""
"""
tk.Toplevel.__init__( self, parent )
self.parent = parent
self.resizable( False, False )
parent.config( cursor="wait" )

if title:
self.title( title )

body = tk.Frame( self )
body.pack( padx=2, pady=2 )
self.initial_focus = self.body( body )
if not self.initial_focus:
self.initial_focus = self
self.initial_focus.focus_set()
self.buildButtons()
self.protocol( "WM_DELETE_WINDOW", self.cancel )

self.transient( parent )
self.grab_set()
self.withdraw()
self.update_idletasks()
self.geometry( "+%d+%d" %
((self.winfo_screenwidth()-self.winfo_reqwidth())/2,
(self.winfo_screenheight()-self.winfo_reqheight())/2) )
self.deiconify()
self.wait_window( self )

#--------------------------------------------------------------------------
def body( self,
master ):
pass

#--------------------------------------------------------------------------
def buildButtons( self ):
box = tk.Frame( self )
w = tk.Button( box, text="OK", width, command=self.ok,
default=tk.ACTIVE )
w.pack( side=tk.LEFT, padx=5, pady=5 )
w = tk.Button( box, text="Cancel", width, command=self.cancel )
w.pack( side=tk.LEFT, padx=5, pady=5 )
self.bind( "<Return>", self.ok )
self.bind( "<Escape>", self.cancel )
box.pack()

#--------------------------------------------------------------------------
def ok( self,
event=None ):
if not self.validate():
self.initial_focus.focus_set() # put focus back
return

self.withdraw()
self.update_idletasks()
self.apply()
self.cancel()

#--------------------------------------------------------------------------
def cancel( self,
event=None ):
self.parent.config( cursor="" )
self.parent.focus_set()
self.destroy()

#--------------------------------------------------------------------------
def validate( self ):
return 1

#--------------------------------------------------------------------------
def apply( self ):
pass

C'est pas de moi... C'est une "compil" de diverses sources...