Script works in IDLE, but .py-file doesn't work

前端 未结 6 1933
误落风尘
误落风尘 2020-12-31 17:40

I have a tkinter script, which runs just fine in IDLE. However, when I double click the .py-file from Windows Explorer, the console window flashes half a second and then it

相关标签:
6条回答
  • 2020-12-31 18:15

    I had exactly the same problem with one of my scripts utilizing Tkinter. Adding call to mainloop() fixed the issue. See this tutorial for an example: [http://sebsauvage.net/python/gui/#import1

    In my case, in the init function I have

    def __init__(self,Width=400, Height=400):
            # Create GUI window ------------------------------            
            win = Tk()
            ...
    

    in the end of init I added:

            win.mainloop()
    

    Now it works by just running the file. Hope this helps

    0 讨论(0)
  • 2020-12-31 18:26

    I found that changing the executable py file to a file.pyw fixed the problem. This tells python to execute it using the pythonw.exe which runs the script without the terminal/console in the background.

    Not sure why this works, perhaps some screwed up environment variables from a previous python installation.

    0 讨论(0)
  • 2020-12-31 18:34

    Similar trouble for me just now, in my first week with python. But I dimly remembered a similar problem with a simple early test script and thought the trouble then was # comments. So I tried that with my Tkinter infused .py script. It ran fine in IDLE as you say, then only flashed when clicked in windows. But there were a couple # commented lines at the top of file.

    I took them all out and it now runs no sweat directly in windows. Have a look .. for #.

    Sorry, can't seem to delete this post. Now the files work #comments included. Don't know what's up with that. ..

    0 讨论(0)
  • 2020-12-31 18:34

    Changing the file's extension to pyw instead of py might solve the problem

    0 讨论(0)
  • 2020-12-31 18:36

    IDLE uses Tkinter as its graphical environment. It is possible that your code is relying on a side effect of an import by IDLE itself. This is especially true if you use IDLE without a subprocess.

    The simpledialog module does not import when using from tkinter import *. Try adding this to your code:

    import tkinter.simpledialog as simpledialog
    
    0 讨论(0)
  • 2020-12-31 18:37

    Have you updated your PATH environment variable so that your Python executable is found? You can find more information on how to do here - Using Python on Windows

    But you basically need to make sure that the folder containing python.exe (e.g. C:\Python32) is displayed when you type the following command from a prompt:

    echo %PATH%
    
    0 讨论(0)
提交回复
热议问题