「解決したいこと」: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

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/18 15:30