gpt4 book ai didi

python - 无法在 tkinter 中使用 Canvas 滚动(布局位于网格系统中)?

转载 作者:行者123 更新时间:2023-12-01 02:22:57 24 4
gpt4 key购买 nike

当我尝试在 Canvas 上使用滚动时,我的 Canvas 消失,只有当我取消注释滚动线时才会出现滚动。

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()

在 Canvas 的右侧应该有一个 Y 方向的滚动条。 enter image description here

当我取消注释滚动条语句时,我得到奇怪的输出(参见屏幕截图)。

enter image description here

最佳答案

问题在于您将 Canvas 设置为滚动条父级:scrollbar = Scrollbar(c),因此当您对滚动条进行网格化时, Canvas 会缩小以适合滚动条。

因此,解决方案是对 Canvas 和滚动条使用相同的父级,并将它们并排网格化:

c = Canvas(root, bg="red", width=900, height=500, scrollregion=(1,0,1000,1000))
scrollbar = Scrollbar(root)

c.grid(row=1, column=0)
scrollbar.grid(row=1, column=1, sticky='ns')

关于python - 无法在 tkinter 中使用 Canvas 滚动(布局位于网格系统中)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47770719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com