0

私はこれで私の髪を引き裂くところまで来ています:

Tkinter で大きなキャンバスを移動できるように、xscrollbar と yscrollbar を機能させようとしています。私がとてもイライラしている理由は、yscrollbar がまったく同じコードで動作しているように見えるからです (どこでも x を y に置き換えます)。ここに私が持っているものがあります:

master = Tk()
scrolly = Scrollbar(master,orient = VERTICAL)
scrollx = Scrollbar(master,orient = HORIZONTAL)
scrollx.pack(side = TOP,fill = X)
scrolly.pack(side = RIGHT,fill = Y)
w = Canvas(master, width=1000,height=1000,yscrollcommand = scrolly.set,xscrollcommand = scrollx.set,scrollregion=(0,0,1000,1000))
s = Scale(master,from_= 0, to=len(worldlist)-1,orient = HORIZONTAL,length = 595)
s.pack(side = BOTTOM)
w.pack()
setSys(worldlist[0],master,w)
def show(self):
    w.delete(ALL)
    setSys(worldlist[s.get()],master,w)
s.config(command = show)
scrolly.config(command = w.yview)
scrollx.config(command = w.xview)
mainloop()

キャンバスとスケール ウィジェットを一番下に配置します。右と上に、それぞれ ybar と xbar があります。誰かが私が間違っていることを見ることができますか? 私はいくつかの助けを切望しています!

ありがとう!

ゲイブ

4

1 に答える 1

1

xbarが機能しない理由は、スクロールするものが何もないためです。画面よりも大きいサイズにキャンバスを構成すると、動作を開始します。次のコードを見て、構成を追加した場所を確認してくださいscrollregionhttp://www.java2s.com/Code/Python/GUI-Tk/ScrolledCanvas.htm

from Tkinter import * 

def show(self):
    w.delete(ALL)
    setSys(worldlist[s.get()],master,w)

master = Tk()

scrolly = Scrollbar(master,orient = VERTICAL)
scrollx = Scrollbar(master,orient = HORIZONTAL)
scrollx.pack(side = TOP,fill = X)
scrolly.pack(side = RIGHT,fill = Y)

w = Canvas(master, width=500, height=500, yscrollcommand = scrolly.set,
           xscrollcommand = scrollx.set, scrollregion=(0,0,1000,1000))
w.config(scrollregion=(0, 0, 500, 5000))
w.pack()

s = Scale(master,from_= 0, to=100-1,orient = HORIZONTAL,length = 595)
s.pack(side = BOTTOM)
s.config(command = show)


scrolly.config(command = w.yview)
scrollx.config(command = w.xview)


mainloop()
于 2012-07-07T02:42:42.143 に答える