On Dec 5, 10:46 am, [EMAIL PROTECTED] wrote: > On Dec 5, 10:07 am, [EMAIL PROTECTED] wrote: > > > > > On Dec 5, 9:50 am, [EMAIL PROTECTED] wrote: > > > > Having a problem with "compiling" a Tkinter/python program using > > > py2exe (and pyinstaller, for that matter)... > > > > I have several dialogs that are derived from the tkSimpleDialog.Dialog > > > class. These work just fine if run through the interpreter. When I > > > "compile" this with py2exe, I don't see any errors, and when I execute > > > the resulting program, it "appears" to work fine until I invoke one of > > > the derived dialogs. > > > > Then, I get the "body" of the dialog, but no "OK" or "Cancel" button, > > > and I get the following exception: > > > > AttributeError: MyDialog instance has no attribute > > > 'buttonbox' > > > > For reference, MyDialog is declared as follows: > > > #-------------------------------------------------------------------------------- > > > > from Tkinter import * > > > import tkSimpleDialog > > > class MyDialog(tkSimpleDialog.Dialog) > > > > #-------------------------------------------------------------------------------- > > > > And my setup.py file looks like this: > > > > #-------------------------------------------------------------------------------- > > > > from distutils.core import setup > > > import py2exe > > > > setup(console=['tcgui3.py']) > > > > #-------------------------------------------------------------------------------- > > > > I'm invoking py2exe like this: > > > > C:\python setup.py py2exe -p Tkinter -p tkSimpleDialog > > > > ?????? > > > Nevermind. I fixed it. I had a tkSimpleDialog.py in my local > > directory that was typed in from an introductory text. > > > Apparently this was confusing Python. Removing that file, and letting > > it find the tkSimpleDialog from Tk makes it work. > > > Thanks, anyway. > > Ummm... Un-nevermind. I didn't fix it. It's still complaining.
Okay, here's a sample program that fails: #------------------------------------------------------------------ #!/usr/bin/python from Tkinter import * import tkSimpleDialog class MyDialog(tkSimpleDialog.Dialog): def body(self, master): Label(master, text="Label").grid() def apply(self): print "OK" if __name__ == "__main__": root = Tk() md = MyDialog(root) mainloop() #-------------------------------------------- And here's the setup file I'm using with py2exe: #-------------------------------------------- from distutils.core import setup import py2exe opts = { "py2exe": { "includes":"tkSimpleDialog" } } setup(windows=['hellogui.py'], options=opts) #-------------------------------------------- Can't make it any simpler than that... I'm so confused! -- http://mail.python.org/mailman/listinfo/python-list