Скрипт работает в IDLE, но .py-файл не работает - PullRequest
7 голосов
/ 30 ноября 2011

У меня есть скрипт tkinter, который отлично работает в IDLE. Однако, когда я дважды щелкаю по .py-файлу в проводнике Windows, окно консоли мигает полсекунды, а затем закрывается.

Мне удалось сделать отпечаток окна консоли. Там написано:

...etc.etc...
NameError: global name 'simpledialog' is not defined

simpledialog - это модуль в tkinter, который я использую в своем скрипте. Как и я from tkinter import *, нет необходимости явно писать tkinter.simpledialog.

Работает в IDLE, почему не как .py?

Ответы [ 5 ]

6 голосов
/ 02 декабря 2011

IDLE использует Tkinter в качестве графического окружения. Возможно, ваш код полагается на побочный эффект импорта самим IDLE. Это особенно верно, если вы используете IDLE без подпроцесса.

Модуль simpledialog не импортирует при использовании from tkinter import *. Попробуйте добавить это в свой код:

import tkinter.simpledialog as simpledialog
0 голосов
/ 01 ноября 2013

Я обнаружил, что изменение исполняемого файла py на file.pyw решило проблему. Это говорит Python, чтобы выполнить его, используя pythonw.exe, который запускает сценарий без терминала / консоли в фоновом режиме.

Не уверен, почему это работает, возможно, некоторые испорченные переменные окружения из предыдущей установки Python.

0 голосов
/ 11 июля 2012

Подобная проблема для меня только сейчас, в мою первую неделю с питоном. Но я смутно вспомнил похожую проблему с простым ранним тестовым сценарием и подумал, что проблема тогда была в # комментариях. Поэтому я попробовал это с моим Tkinter .py скриптом. Как вы говорите, в IDLE он работал нормально, а затем мигал только при щелчке в Windows. Но в начале файла была пара # закомментированных строк.

Я вытащил их всех, и теперь в окнах не было пота. Посмотрите .. для #.

Извините, не могу удалить это сообщение. Сейчас работают файлы #comments включены. Не знаю, что с этим. ..

0 голосов
/ 24 апреля 2012

У меня была точно такая же проблема с одним из моих скриптов, использующих Tkinter.Добавление вызова к mainloop () решило проблему.См. Этот учебник для примера: [http://sebsauvage.net/python/gui/#import 1

В моем случае в функции init у меня есть

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

в конце init Я добавил:

        win.mainloop()

Теперь все работает, просто запустив файл. Надеюсь, это поможет

0 голосов
/ 30 ноября 2011

Обновили ли вы переменную среды PATH, чтобы найти исполняемый файл Python?Вы можете найти больше информации о том, как это сделать, здесь - Использование Python в Windows

Но вам необходимо убедиться, что папка, содержащая python.exe (например, C: \ Python32), отображаетсяпри вводе следующей команды из приглашения:

echo %PATH%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...