Tkinter vs. py2exe problem
msunderwd at gmail.com
msunderwd at gmail.com
Wed Dec 5 10:53:58 EST 2007
On Dec 5, 10:46 am, msunde... at gmail.com wrote:
> On Dec 5, 10:07 am, msunde... at gmail.com wrote:
>
>
>
> > On Dec 5, 9:50 am, msunde... at gmail.com 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!
More information about the Python-list
mailing list