0

リストボックスを作成するフレームと関数があります。ボタンを押すと、フレームを非表示にして新しいフレームを作成し、このフレームで create_listbox 関数も使用したいと考えています。フレームを非表示にして新しいフレームを作成すると、完全に正常に機能します。ただし、2番目のフレームでリストボックスを作成しようとすると、ウィンドウが狂ってサイズが変更され続けます。これは、プログラムの簡略化されたバージョンです。

class App(Frame):

def __init__(self, master):
    Frame.__init__(self, master)
    self.grid()
    self.f1 = Frame(self.master)
    self.f1.pack()
    self.f2 = Frame(self.f1)
    self.f2.grid()
    self.create_listbox(self.f1)

def create_listbox(aframe):
    self.listbox = Listbox(aframe)
    self.listbox.pack()

def hide_f2:
    self.f2.grid_forget()
    self.f3 = Frame(self.f1)
    self.create_listbox(self.f1)

最初に、リストボックスオブジェクトがf2とf3の両方に属しているため、非表示にするか表示するかを決定できないためだと考えましたが、今はもうわかりません:(

4

1 に答える 1

0

私は自分で答えを見つけました!どうやら、問題を引き起こしたのはルートウィンドウでした。を削除したところself.grid()、すべてが正常に機能しました。ルートウィンドウをグリッド化するとパックグリッドの問題が発生する理由を誰かが知っている場合は、説明をいただければ幸いです:)

于 2012-12-26T13:21:24.627 に答える