キャンバスでスクロールを使用しようとするとキャンバスが消え、スクロールラインのコメントを外すとスクロールが表示されます。tkinterのキャンバスでスクロールを使用できません(レイアウトはグリッドシステムにあります)?
from tkinter import *
from utils import editionMap, topicMap, langMap
root = Tk()
''' Top Frame to filter News by Country, Location, Language '''
Top_Frame = Frame(root)
editionMap_dropdown = StringVar()
topicMap_dropdown = StringVar()
langMap_dropdown = StringVar()
Button_Go = StringVar()
editionMap_dropdown.set("Country")
topicMap_dropdown.set("Topic")
langMap_dropdown.set("Language")
Button_GetNews = Button(Top_Frame, text="Get News")
e = OptionMenu(Top_Frame, editionMap_dropdown, *editionMap.keys())
t = OptionMenu(Top_Frame, topicMap_dropdown, *topicMap.keys())
l = OptionMenu(Top_Frame, langMap_dropdown, *langMap.keys())
e.grid(row=0, column=0)
t.grid(row=0, column=1)
l.grid(row=0, column=2)
Button_GetNews.grid(row=0, column=3)
Top_Frame.grid(row=0, column=0)
c = Canvas(root, bg="red", width=900, height=500, scrollregion=(1,0,1000,1000))
#scrollbar = Scrollbar(c) <---Uncomment
#scrollbar.grid(row=1, column=0) <---Uncomment
c.grid(row=1, column=0)
root.mainloop()
私がスクロールバーのステートメントのコメントを外すと、私は奇妙な出力を得る(スクリーンショットを参照)。
ので、スクロールバーはキャンバスを置き換えます。 –
@ j_4321スクロールバーで 'row = 1'と' column = 1'を使用すると、それでも動作しません。 –
私はあなたがスクロールバーの親として 'c'を使っているのを見ていませんでした。あなたはキャンバス上のスクロールバーをグリッド化しており、スクロールバーに合わせてキャンバスを縮小します。キャンバスとスクロールバーの両方に同じ親を使用し、それらを並べてグリッド化する方が良いです。 –