Dialogfenster implementieren

Fragen zu Tkinter.
Gast

Dialogfenster implementieren

Beitragvon Gast » Freitag 9. September 2005, 14:25

Hallo,
ich möchte bei meiner Applikation gerne ein Dialogfenster erstellen. Dazu habe ich mir eine Klasse gebaut die sich im wesentlichen an der Klasse Dialog in diesem Beispiel hier http://effbot.org/tkinterbook/tkinter-dialog-windows.htm orientiert. In meiner Applikation soll dann ein Objekt dieser Klasse instanziiert werden:

Code: Alles auswählen

csDialog=OrthoPlanesDialog(root)

Beim Kompilieren erhalte ich jedoch die Fehlermeldung:

Code: Alles auswählen

csDialog=OrthoPlanesDialog(root)
TypeError: 'module' object is not callable

Liegt das daran, dass ich das falsche Argument übergebe, oder liegt der Fehler in der Art, wie meine Dialogklasse programmiert ist?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 9. September 2005, 17:44

OrthoPlanesDialog ist bei dir ein Modul, was steht denn in der Datei OrthoPlanesDialog.py drin?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Gast

Beitragvon Gast » Montag 12. September 2005, 10:08

Hier ist die Klasse OrthoPlanesDialog.py. Das Grundgerüst entspricht dem aus dem Beispiel von oben genannten Link, ich habe lediglich die methode body(self, master) meinen Vorstellungen angepasst.

Code: Alles auswählen

#!/usr/bin/python
 
from Tkinter import *
import os

class OrthoPlanesDialog(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 SetTkmini(tkminiasp):
       self.tkmini=tkminiasp
   self.axialBut.configure(command=self.tkmini.ToggleAxialPlane)
    def body(self, master):
        csLab = Label(master, text="Toggle Cross Section Planes", font=title)
   axialLab = Label(master, text="Axial Plane", font=normal)
   coronalLab = Label(master, text="Coronal Plane", font=normal)
   sagittalLab = Label(master, text="Sagittal Plane", font=normal)
   self.axStatus=IntVar()
   self.coStatus=IntVar()
   self.saStatus=IntVar()
   self.axStatus.set(1)
   self.saStatus.set(1)
   self.coStatus.set(1)
   self.axialBut = Checkbutton(master, text="On/Off", variable=self.axStatus,font=normal)
   """self.coronalBut = Checkbutton(master, text="On/Off", variable=self.coStatus , command=self.ToggleCoronalPlane, font=normal)
   self.sagittalBut = Checkbutton(master, text="On/Off", variable=self.saStatus, command=self.ToggleSagittalPlane, font=normal)
   mainLab=Label(master, text="Switch Everything", font=normal)
   self.mainStatus=IntVar()
   self.mainStatus.set(1)
   mainBut=Checkbutton(master, text="On/Off",variable=self.mainStatus,command=self.ToggleAll, font=normal)
   """
   csLab.grid(column=0,row=0, columnspan=2, sticky='w')
   axialLab.grid(column=0,row=1,sticky='e')
   coronalLab.grid(column=0,row=2,sticky='e')
   sagittalLab.grid(column=0,row=3,sticky='e')
   mainLab.grid(column=0,row=4,sticky='e')
   self.axialBut.grid(column=1,row=1)
   """self.coronalBut.grid(column=1,row=2)
   self.sagittalBut.grid(column=1,row=3)
   mainBut.grid(column=1,row=4)
   return self.axialBut #initial focus
        """#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
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Beitragvon mawe » Montag 12. September 2005, 11:06

Hi!

Wie hast Du denn OrthoPlanesDialog.py in Dein Script eingebunden?

Code: Alles auswählen

# so?
import OrthoPlanesDialog
# oder so?
from OrthoPlanesDialog import OrthoPlanesDialog
# oder so?
from OrthoPlanesDialog import *

Im ersten Fall musst Du es nämlich so aufrufen:

Code: Alles auswählen

csDialog = OrthoPlanesDialog.OrthoPlanesDialog(root)


Gruß, mawe

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder