Tkinter vs. py2exe problem

M

msunderwd

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

??????
 
M

msunderwd

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

??????

Oh yeah... if it matters, I'm using Python 2.5.1 on Win XP, and py2exe
v1.4. I get the same problem using pyinstaller, except it doesn't
show the exception - it just fails to display the buttons.
 
M

msunderwd

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

??????

Oh, and it fails when the setup() line in setup.py says
"setup(window=['tcgui3.py'])" as well. Same error.
 
M

msunderwd

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.
 
M

msunderwd

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.
 
M

msunderwd

On Dec 5, 9:50 am, (e-mail address removed) 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!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,817
Latest member
DicWeils

Latest Threads

Top