私のtkinterキャンバスのスクロールバーの位置に関する質問。私は3つのキャンバスウィジェットを持つフレームを持っています。アイデアのために礼儀to this post。私は水平スクロールバーを追加し、各キャンバスには50以上の列500 +行のパンダデータフレームがあります。負荷はそれほど速くはないが、それは目的ではない。tkinterキャンバスの下の位置にスクロールバーを置く
新しい行が各データフレームの最後に追加されます。この新しい行には検証が必要です。したがって、毎回スクロールする代わりに、スクロールバー/またはキャンバスが底部を表示するとすばらしいことになります。
3xキャンバスと3xスクロールバー(x + y)が定義されているコードの下を参照してください。
def createBox(window):
list_ = ['df1', 'df2', 'df3'] # 3 dataframes
for i in range(3):
mybox = LabelFrame(window, padx=5, pady=4)
mybox.grid(row=i, column=0)
createWindow(mybox, list_[i], i)
def createWindow(box, lt_actual, i):
canvas = Canvas(box, borderwidth=0)
frame = Frame(canvas)
vsbY = Scrollbar(box, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=vsbY.set, width=1200, heigh=200)
vsbY.pack(side="right", fill="y")
vsbX = Scrollbar(box, orient="horizontal", command=canvas.xview)
canvas.configure(xscrollcommand=vsbX.set, width=1200, heigh=200)
vsbX.pack(side="bottom", fill="x")
#canvas.yview_moveto(1) - no effect
#canvas.yview_moveto(1.0) - no effect
canvas.pack(side="left", fill="both", expand=True)
canvas.create_window((4,4), window=frame, anchor="nw", tags="frame")
# be sure that we call OnFrameConfigure on the right canvas
frame.bind("<Configure>", lambda event, canvas=canvas: OnFrameConfigure(canvas))
私はこのフォーラムに、私はのmoveTo()/ yview_moveto()コマンドのオプションを使用する必要がありますが、これまでのところ、これは動作していないよういくつかのinfo (effbot) pagesで読みます。
質問1. yスクロールバーを下に配置するか、キャンバスビューを下に配置する必要があります。
質問2. movetoの使い方に関するガイダンスを提供できますか、別の方法をとるべきですか?
ありがとうございます!
@ l_4321ありがとうございました。これは確かに実用的な例です。後で自分のコードに何が間違っているかを調べます。しかし私は間違いについてのフィードバックを提供します。 Thnx。 –