2015-06-08 107 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控制檯它工作正常,不寄託都我想要它做的。但是,只要我在我的桌面上運行.py文件。黑色窗口出現,然後關閉,沒有任何反應。任何幫助?

+0

這不是問題所在。 – TigerhawkT3

+0

20秒後關閉,沒有任何反應 –

回答

2

首先,你有兩個名字相同的方法。第一個被第二個覆蓋。在第二個結尾處,您需要以下行:

root.mainloop() 

這將實際運行GUI。從腳本運行時需要它,但在交互式解釋器中運行時不需要。

在第二__openInjector的末尾添加它:

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

錯誤。你是否將該行添加到正確的功能? – TigerhawkT3

+0

我的評論/答案/測試簡單,超過視覺和複雜性。我相應地刪除了,因爲這是正確的,(最重要的)簡單的答案。 – BiTinerary

1

在你的第二個__openInjector方法的最後,添加一行:root.mainloop()

這是Tkinter運行您的代碼所必需的。 mainloop實際上只不過是一個等待事件的無限循環。事件可以是用戶交互,諸如點擊按鈕。

我的猜測是,當您爲純粹的便利原因交互式運行時,您不需要mainloop

相關問題