2008-11-02 24 views

Respuesta

11

Su mejor opción es el módulo tkMessageBox, que debería funcionar en todos los sistemas (ya que Python generalmente vendrá con Tkinter).

Si puede restringirse a un sistema operativo específico, es posible que haya mejores opciones disponibles.

2

He oído cosas buenas sobre wx python, que también es multiplataforma.

3

Se pueden crear cuadros de mensajes simples y cuadros de entrada usando EasyGui, una pequeña biblioteca que usa Tkinter, que viene con Python.

Puede obtener easyGUI aquí: http://easygui.sourceforge.net/

1

de Tkinter

import * 
import os 

    class Dialog(Toplevel): 

    def __init__(self, parent, title = None): 

     Toplevel.__init__(self, parent) 
     self.transient(parent) 

     if title: 
      self.title(title) 

     self.parent = parent 

     self.result = None 

     body = Frame(self) 
     self.initial_focus = self.body(body) 
     body.pack(padx=5, pady=5) 

     self.buttonbox() 

     self.grab_set() 

     if not self.initial_focus: 
      self.initial_focus = self 

     self.protocol("WM_DELETE_WINDOW", self.cancel) 

     self.geometry("+%d+%d" % (parent.winfo_rootx()+50, 
            parent.winfo_rooty()+50)) 

     self.initial_focus.focus_set() 

     self.wait_window(self) 

    # 
    # construction hooks 

    def body(self, master): 
     # create dialog body. return widget that should have 
     # initial focus. this method should be overridden 

     pass 

    def buttonbox(self): 
     # add standard button box. override if you don't want the 
     # standard buttons 

     box = Frame(self) 

     w = Button(box, text="OK", width=10, command=self.ok, default=ACTIVE) 
     w.pack(side=LEFT, padx=5, pady=5) 
     w = Button(box, text="Cancel", width=10, command=self.cancel) 
     w.pack(side=LEFT, padx=5, pady=5) 

     self.bind("<Return>", self.ok) 
     self.bind("<Escape>", self.cancel) 

     box.pack() 

    # 
    # standard button semantics 

    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): 

     # put focus back to the parent window 
     self.parent.focus_set() 
     self.destroy() 

    # 
    # command hooks 

    def validate(self): 

     return 1 # override 

    def apply(self): 

     pass # override 
Cuestiones relacionadas