質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

1166閲覧

Python3 Tkinter スクロールできるフレームについて

person

総合スコア223

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2021/12/26 12:14

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()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

tk.Canvashighlightthickness=0 を指定してみてはどうでしょうか。

python

1 self.canvas = tk.Canvas(self, highlightthickness=0)

canvas

投稿2021/12/26 12:43

melian

総合スコア19618

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問