Python v2.7 の tkinter でカスタム フレームを作成しようとしています。私はこれを 1 回 (スクロールバーのあるフレーム) うまく実行しましたが、2 回目の試みはうまくいきません。動作するフレームと比較すると、何が違うのか理解できません。
私が欲しいのは、その下に小さな区切り線があるフレームなので、「通常の」フレーム、その下の区切りとして使用する薄いフレーム、およびそれを保持する bigFrame を作成しています。
フレーム自体を除いて、クラスで作成したものはすべて機能します。うまくいけば、私のコメントが表示されているものと表示されていないものを説明しています。
from Tkinter import *
class FunFrame(Frame):
def __init__(self, master, lbl, **kwargs):
self.bigFrame = Frame(master)
Frame.__init__(self, self.bigFrame, width=280, height=200, bg="red", **kwargs)
self.grid(row=0, column=0, pady=3) #this is in bigFrame, and doesn't display
#however the padding is still respected
self.separator = Frame(self.bigFrame, height=2, bd=1, width=280, relief = SUNKEN)
self.separator.grid(row=1, column=0) #this is in bigFrame, and displays
self.l = Label(self, text=lbl) #this is in self and doesn't display
self.l.grid(row=0, column=0)
def grid(self, **kwargs):
self.bigFrame.grid(**kwargs)
if __name__ == "__main__":
root=Tk()
Frame1=FunFrame(root, "hello")
Frame2=FunFrame(root, "world")
Frame1.grid(row=0, column=0)
Frame2.grid(row=1, column=0)
root.mainloop()