ここで誰かが私を助けてくれることを願っています。私が作成した tkinter GUI に問題があります。この問題は Windows でのみ発生します。私のGUIは、いくつかのラベルを含む結果フレームを作成します.何か他のものを計算するときは、ユーザーが「newPort」ボタンをクリックすると、そのボタンは結果フレームを削除False
し、計算に内部のいくつかのインスタンス属性に設定します 私が抱えている問題は、ウィンドウでのみ明らかであり、結果frame
とその子孫labels
が毎回消えないことがあります。時々彼らはそうします、時々彼らはしません。インスタンス変数は正しく設定されてFalse
いますが、ウィジェットはまだメイン GUI に表示されています。GUI には、いくつかcheckboxes
のradiobuttons
ただし、結果フレームの作成にも予想される破壊にも影響しません。ボタンをクリックする前にユーザーが実行するアクションのパターンを特定できませんでした。newPort
これにより、frame
andlabels
が破壊されません。これは、py2exe でアプリをフリーズし、Eclipse IDE 内の Python インタープリターからアプリを実行すると発生します。Python インタープリターから直接 (つまり、IDE なしで) アプリを実行しようとしたことはありません。また、Eclipse Python インタープリターを使用してアプリを実行すると、Mac でこの問題は発生しません。どうもありがとうございました!私のコードは次のようになります。
import Tkinter as TK
class widget(object):
def __init__(self,parent=None):
self.parent = TK.Frame(parent)
self.parent.grid()
self.frame = TK.Frame(self.parent)
self.frame.grid()
newLedger = TK.Button(self.parent,command=self.newPort).grid()
self.calcButton = TK.Button(self.frame,command=self.showResults)
self.calcButton.grid()
self.calcVariable = True
def newPort(self):
self.calcVariable = False
try:
self.second.grid_forget()
self.first.grid_forget()
self.resultsFrame.grid_forget()
self.second.destroy()
self.first.destroy()
self.resultsFrame.destroy()
except:
raise
self.frame.update_idletasks()
def showResults(self):
self.resultsFrame = TK.Frame(self.frame)
self.resultsFrame.grid()
self.first = TK.Label(self.resultsFrame,text='first')
self.first.grid()
self.second = TK.Label(self.resultsFrame,text='second')
self.second.grid()
if __name__ == '__main__':
root = TK.Tk()
obj = widget(root)
root.mainloop()