2015-06-08 2 views
0

Так что у меня этот код:никаких ошибок, но не побежит

try: 
    # for Python2 
    from Tkinter import * 
except ImportError: 
    # for Python3 
    from tkinter import * 

class Injector(): 

    def __openInjector(self): 
     root = Tk() 
     root.geometry('600x400') 
     root.title('Toontown Rewritten Injector') 
     root.resizable(False, False) 

    def __init__(self): 
     self.code = '' 
     self.__openInjector() 

    def runInjectorCode(self): 
     exec(self.code.get(1.0, 'end'), globals()) 

    def __openInjector(self): 
     root = Tk() 
     root.geometry('600x400') 
     root.title('Toontown Rewritten Injector') 
     root.resizable(False, False) 

     frame = Frame(root) 
     self.code = Text(frame, width=70, height=20) 
     self.code.pack(side='left') 

     Button(root, text='Inject!', command=self.runInjectorCode).pack() 

     scroll = Scrollbar(frame) 
     scroll.pack(fill='y', side='right') 
     scroll.config(command=self.code.yview) 

     self.code.config(yscrollcommand=scroll.set) 
     frame.pack(fill='y') 

Injector() 

В IDLE консоли она отлично работает и делает Everthing я хочу, чтобы это сделать. Но всякий раз, когда я запускаю файл .py на своем рабочем столе. Появится черное окно, затем просто закрывается и ничего не происходит. Любая помощь?

+0

Это не проблема. – TigerhawkT3

+0

через 20 секунд он закрывается и ничего не происходит –

ответ

2

Во-первых, у вас есть два метода в вашем классе с тем же именем. Первая из них перезаписывается второй. В конце этого второго вам понадобится следующая строка:

root.mainloop() 

Это фактически запустит графический интерфейс пользователя. Это необходимо при запуске из сценария, но не при работе в интерактивном интерпретаторе.

Добавьте его в конце второго __openInjector:

... 
self.code.config(yscrollcommand=scroll.set) 
frame.pack(fill='y') 
root.mainloop() 
+0

Неверно. Вы добавляете строку к правильной функции? – TigerhawkT3

+0

Woops, простое наблюдение и сложность моего комментария/ответа/тестирования. Я удалил соответственно, потому что это правильный (наиболее важный) простой ответ. – BiTinerary

1

В конце своего второго __openInjector метода, добавьте строку: root.mainloop().

Это необходимо, чтобы Tkinter запускал ваш код. mainloop - это не что иное, как бесконечный цикл, ожидающий событий. Событием может быть взаимодействие с пользователем, например, нажатие кнопки.

Я думаю, что вам не нужно mainloop при работе в интерактивном режиме по чистому соображению.

Смежные вопросы