learning curve

Verde Denim tdldev at gmail.com
Thu Dec 27 20:20:30 EST 2012


Just getting into Py coding and not understanding why this code doesn't
seem to do anything -

# File: dialog2.py
import dialog_handler

class MyDialog(dialog_handler.Dialog):
    def body(self, master):
        Label(master, text="First:").grid(row=0)
        Label(master, text="Second:").grid(row=1)
        self.e1 = Entry(master)
        self.e2 = Entry(master)
        self.e1.grid(row=0, column=1)
        self.e2.grid(row=1, column=1)
        return self.e1 # initial focus

    def apply(self):
        first = string.atoi(self.e1.get())
        second = string.atoi(self.e2.get())
        print first, second # or something

# File: dialog_handler.py

from 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



More information about the Python-list mailing list