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

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

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

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

Tkinter

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

Q&A

解決済

1回答

5320閲覧

tkinterで、複数のラベルをテーブル状に並べたものをスクロールしたい。

H.K2

総合スコア88

Python 3.x

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

Tkinter

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

0グッド

0クリップ

投稿2019/02/17 05:26

「解決したいこと」:TkinterでGUIを作成し、Toplevelウィジェット上にFrameをおき、
その上にLabelをテーブル状に並べています。
この、テーブル状に並べたLabelをスクロールバーで制御したいです。
(Tableのサイズは可変で、数十行くらいになることがあります)

しかしながら、上記目的のためのクラスを作成したところ、スクロールバーは張り付いたのですが、
画面全体にスクロールバーが設定されず、スクロールバー自体も機能しません。(クリックしても動作しません。)

状況としては下記のような感じです。

イメージ説明

質問したいことは下記となります。
①ラベルをテーブル状に並べたものはスクロールバーで制御できないのでしょうか。(テーブル全体をスクロールする)
②制御できない場合、代替手段としてはどのような方法がありますでしょうか。

なお、上記部分のクラスのソースコードは下記となります。(エラーは出力されず、正常に実行されます。)
ソースコードが汚いかもしれませんが、ご容赦いただきたく。
何らかの解決にかかわる知見を頂けましたら幸甚に存じます。

Python3

1# Checkboxを含むLabelのテーブル 2class LabelTableWithCb: 3 def __init__(self, master=None, num_y=3, p_x=0, p_y=0, dir_lst=None): 4 # place使うときは、フレームサイズを決めておく必要。 5 self.pane = tk.Frame(master=master, padx=2, pady=2, bd=2, relief="ridge") 6# self.pane.configure(width=400, height=600) # 本当はframeのサイズ変えたいけど、なぜか表示されなくなるからpackで。 7# self.pane.place(relx=p_x, rely=p_y, relwidth=100, relheight=100) 8 self.pane.pack() 9 10 self.scr_bar_all = tk.Scrollbar(self.pane) 11 self.scr_bar_all.grid(column=2, row=1, rowspan=num_y) 12 13 title_lst = ["ラベル", "チェック"] 14 self.cb = [] 15 self.cb_val = [] 16 17 # タイトル部分 18 for x in range(len(title_lst)): 19 tk.Label(master=self.pane,text=title_lst[x], bd=2, relief="ridge").grid(column=x, row=0, sticky=tk.NSEW) 20 21 for y in range(1, num_y): 22 # No.の位置 23 tk.Label(master=self.pane,text=dir_lst[y-1], bd=2, relief="ridge").grid(column=0, row=y, sticky=tk.NSEW) 24 # チェックボックスの列 25 self.cb_val.append(tk.BooleanVar()) 26 self.cb_val[y-1].set(False) 27 self.cb.append(tk.Checkbutton(master=self.pane,text="チェック{}".format(y), variable=self.cb_val[y-1], bd=2, relief="ridge")) 28 self.cb[y-1].grid(column=1, row=y, sticky=tk.NSEW) 29

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

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

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

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

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

guest

回答1

0

ベストアンサー

投稿2019/02/17 17:24

編集2019/02/17 17:24
hayataka2049

総合スコア30933

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

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

H.K2

2019/02/18 15:30

ありがとうございます! ソースみてる感じだとできそうですね! (なるほど、Canvasに食わせて、そっちのyviewで更新させる手段ですか…。勉強になります。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問