[tkinter] trouble running imported modules in main program


S

snakeinmyboot

Hello,

I am currently just starting to learn the basics of the tkinter module and ive run into a problem. To teach myself I am messing around by creating separate modules containing basic GUI apps like a tip calculator and kilometerconverter, then creating a main program that displays buttons you can click that will create instances of the modules (tip calculator, kilometer converter). So far ive managed to successfully make the basic GUI apps works just fine, and have been able to import them into my main program and get them to launch in a new window when i click the buttons and everything, but heres my problem.

Everything displays ok, like the labels, entry boxes, and buttons, but whenI actually click the buttons (which are supposed to trigger a method within the module and display a label containing the calculated data).. nothing happens. When I run the modules by themselves everything works just fine (testing by making the module create an instance of itself but i # them out before running the main program).

I have posted all my code to this forum if you need to look at it

http://python-forum.org/viewtopic.php?f=12&t=5620

Any idea what im doing wrong here?
 
Ad

Advertisements

T

Terry Reedy

Hello,

I am currently just starting to learn the basics of the tkinter module and ive run into a problem. To teach myself I am messing around by creating separate modules containing basic GUI apps like a tip calculator and kilometer converter, then creating a main program that displays buttons you can click that will create instances of the modules (tip calculator, kilometer converter). So far ive managed to successfully make the basic GUI apps works just fine, and have been able to import them into my main program and get them to launch in a new window when i click the buttons and everything, but heres my problem.

Everything displays ok, like the labels, entry boxes, and buttons, but when I actually click the buttons (which are supposed to trigger a method within the module and display a label containing the calculated data).. nothing happens. When I run the modules by themselves everything works just fine (testing by making the module create an instance of itself but i # them out before running the main program)

Make the boilerplate test code conditional, something like

if __name__ == '__main__':
root = tkinter.Tk()
app = MainClass(root) # 'MainClass' depends on the module.
root.mainloop
root.destroy

and you do not need to comment it out as it will be ignored when the
module is imported.
I have posted all my code to this forum if you need to look at it

http://python-forum.org/viewtopic.php?f=12&t=5620

Code comments: double and triple spacing code make it painful to read,
especiallly in a 10 line box.

self.miles_button = tkinter.Button(self.frame3, \
text = 'Miles', \
command = self.conv_miles)

Leave off the unneeded \s.
Any idea what im doing wrong here?

You got the answer there -- only one mainloop. Revising the code as
suggested above will do that.

Note: I am a tkinter beginner too, so I would also have to experiment
with details to get importable custom widgets, built from tk widgets, right.
 
S

snakeinmyboot

Make the boilerplate test code conditional, something like



if __name__ == '__main__':

root = tkinter.Tk()

app = MainClass(root) # 'MainClass' depends on the module.

root.mainloop

root.destroy


Could you elaborate on this a little bit? Never even heard the term "boilerplate test code".
Also, I have removed the mainloops from the other modules, but this didnt seem to affect anything.
Thanks for the reply!
 
S

snakeinmyboot

Make the boilerplate test code conditional, something like
if __name__ == '__main__':

root = tkinter.Tk()

app = MainClass(root) # 'MainClass' depends on the module.

root.mainloop

root.destroy


Could you elaborate on this a little bit? Never even heard the term "boilerplate test code".
Also, I have removed the mainloops from the other modules, but this didnt seem to affect anything.
Thanks for the reply! (the message I sent you was supposed to be this reply, my bad)
 
C

Cousin Stanley

Terry said:
Code comments :

double and triple spacing code
make it painful to read,

Not for everyone :)

I prefer mostly double-spaced code
in any language
especially in a 10 line box.

Agree, but the 10 line box
would not be used for routine
code editing and viewing
and could be made larger
to accomodate viewing code
posted online ....
 
S

snakeinmyboot

if __name__ == '__main__':
root = tkinter.Tk()
app = MainClass(root) # 'MainClass' depends on the module.
root.mainloop
root.destroy

for REAL you guys...wtf does this even mean lol. what is a boilerplate test code?
 
Ad

Advertisements

D

David

for REAL you guys...wtf does this even mean lol. what is a boilerplate test code?

Did you try at all to find the answer to this yourself?

I ask because it took me only a few seconds to go to wikipedia and
search for "boilerplate" find this for you:
http://en.wikipedia.org/wiki/Boilerplate_code

Tip: To successfully use forums like this one (where a lot of very
smart people read), the more care/effort/thought you demonstrate that
you tried to solve your issue before asking, the more likely you are
to receive a response.
 
S

snakeinmyboot

Did you try at all to find the answer to this yourself?



I ask because it took me only a few seconds to go to wikipedia and

search for "boilerplate" find this for you:

http://en.wikipedia.org/wiki/Boilerplate_code



Tip: To successfully use forums like this one (where a lot of very

smart people read), the more care/effort/thought you demonstrate that

you tried to solve your issue before asking, the more likely you are

to receive a response.


I did read that article but I couldnt really figure out how to apply it to the code he was giving as an example of making it "conditional".
 
Ad

Advertisements

D

David

I did read that article but I couldnt really figure out how to apply it to the code he was giving as an example of making it "conditional".

Did you try the research method I gave you in my previous answer?
 

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

Top