前提・実現したいこと
このプログラムでは, 時間割のようなものをボタンで作成し, 押したところのテキストを任意のボタンのテキストと交換するというものを作成しようと考えています.
その中で画面上には表示しきれない長さの表になっているのでスクロールバーで画面を動かしたいと考えています.
そこで, tkinterでスクロールバーをつけて動かしてみたところ
スクロールバー自体は動いているのですが, 表示されている画面が動いてくれません.
Canvas Widget上に配置するコードは書いてはいるもののなぜ動かないのかわからない状態です.
現在, 学び初めで分からないことが多いので初歩的な質問ではあると思うのですが答えていただければ幸いです.
該当のソースコード
Python
1from tkinter import * 2from tkinter import ttk 3import csv 4import numpy as np 5 6root = Tk() 7root.title("class table system") 8root.geometry("1400x400") 9 10canvas = Canvas(root) 11 12bar = Scrollbar(root, orient = HORIZONTAL) 13bar.pack(side = BOTTOM, fill = X) 14bar.config(command = canvas.xview) 15 16canvas.config(xscrollcommand = bar.set) 17canvas.config(scrollregion=(0,0, 1800,400)) 18canvas.pack(fill = BOTH) 19 20frame = ttk.Frame(canvas) 21 22canvas.create_window((0,0), window=frame, anchor=NW, width=canvas.cget("width")) 23 24data =[] 25 26csv_file = open("tab.csv", "r") 27 28dtype = [("name", "U24")] 29 30data = np.zeros(5, dtype = dtype) 31 32reader = csv.reader(csv_file) 33 34header = next(reader) 35data = [e for e in reader] 36 37print(data) 38 39class PeriodicTable(ttk.Frame): 40 41 def __init__(self,master): 42 super().__init__(master,borderwidth=5) 43 self.pack() 44 self.create_widgets() 45 46 def create_widgets(self): 47 for vr in range(0,4): 48 for hr in range(0,40): 49 button = ttk.Button(self,text=data[vr][hr]) 50 button.grid(column=hr,row=vr,sticky = (N,S,E,W)) 51 52PeriodicTable(frame) 53 54 55frame.pack() 56 57root.mainloop()
補足情報(FW/ツールのバージョンなど)
Python 3.7.4を使用しています.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/08 02:06