Tkinterで、フレームをスクロールしたいです。
フレームにはラベルやエントリを配置します。
調べてみると、Canvasにフレームを配置して、Canvasにスクロールバーを対応させるという方法で対応可能らしいです。
調べていくと、
【Python/Tkinter】スクロール可能なFrameを作成するクラス
という記事がありました。(方法は上記と同じです。)
この記事にあったコードを試していて気になったのですが、
エントリをクリックすると、フレームの枠が太くなります。
これをクリックしても線が出ないようにすることは可能ですか?
Python:
1import tkinter as tk 2import tkinter.ttk as ttk 3 4class ScrollableFrame(ttk.Frame): 5 def __init__(self, container, bar_x = True, bar_y = True): 6 super().__init__(container) 7 self.canvas = tk.Canvas(self) 8 self.scrollable_frame = ttk.Frame(self.canvas) 9 self.scrollable_frame.bind( 10 "<Configure>", 11 lambda e: self.canvas.configure( 12 scrollregion=self.canvas.bbox("all") 13 ) 14 ) 15 self.canvas.create_window((0, 0), window=self.scrollable_frame, anchor="nw") 16 if bar_y: 17 self.scrollbar_y = ttk.Scrollbar(self, orient="vertical", command=self.canvas.yview) 18 self.scrollbar_y.pack(side=tk.RIGHT, fill="y") 19 self.canvas.configure(yscrollcommand=self.scrollbar_y.set) 20 if bar_x: 21 self.scrollbar_x = ttk.Scrollbar(self, orient="horizontal", command=self.canvas.xview) 22 self.scrollbar_x.pack(side=tk.BOTTOM, fill="x") 23 self.canvas.configure(xscrollcommand=self.scrollbar_x.set) 24 self.canvas.pack(side=tk.LEFT, fill="both", expand=True) 25 26if __name__ == "__main__": 27 root = tk.Tk() 28 29 frame = ScrollableFrame(root) 30 frame.grid() 31 32 for i in range(10): 33 for j in range(10): 34 tk.Entry(frame.scrollable_frame).grid(row=i, column=j) 35 36 button = tk.Button(root, text="Button") 37 button.grid() 38 39 root.mainloop()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。