【问题标题】:How do you create a scrollbar for a Canvas inside a bigger window using Tkinter?如何使用 Tkinter 在更大的窗口中为 Canvas 创建滚动条?
【发布时间】:2021-11-13 04:45:48
【问题描述】:

我正在尝试在我将导入表格的画布对象中添加滚动条。我在 Stack Overflow 上找到了以下内容:tkinter: using scrollbars on a canvas

但问题是如果不使用*全部导入,我不知道要导入哪些子模块。我还希望滚动条位于 Canvas 内部,而不是整个窗口本身。

这是我展示侧边栏外观的基本代码:

import tkinter as tk

##Tab Settings:
root=tk.Tk()
root.title("Virtual Desktop")
root.resizable(False, False)

#Tab Resolution
canvas = tk.Canvas(root, width=1080, height=720, bg="LightBlue")
canvas.pack()

#Generic Canvas Where An Table Will Be Imported Into
tablePanel = tk.Canvas(root, width=580, height=250, bg="Blue")
canvas.create_window(540, 360, window=tablePanel)


###Desired Horizontal Sidebar Location (Actual Scrollbar Haven't Added)

#White Sidebar Background
backBar = sideBar = tk.Canvas(root, width=25, height=248, bg="LightGrey")
canvas.create_window(816, 360, window=sideBar)

#Sidebar
sideBar = tk.Canvas(root, width=18, height=150, bg="Grey")
canvas.create_window(816, 316, window=sideBar)


root.mainloop()

编辑:

sideBar=tk.Scrollbar(root, orient='vertical',command = tablePanel.yview())
sideBar["command"]=tablePanel.yview
canvas.create_window(816, 360, window=sideBar)

contents = tk.Canvas(root, width=100, height=100, bg="Green")
tablePanel.create_window(300, 200, window=contents)

contents2 = tk.Canvas(root, width=100, height=100, bg="Green")
tablePanel.create_window(300, 90, window=contents2)

root.mainloop()

提前致谢。

【问题讨论】:

  • 您无需再导入任何内容。导入 tkinter 可为您提供所需的一切。

标签: python tkinter canvas scrollbar


【解决方案1】:

您不必导入任何东西。执行以下操作:

    sideBar=tk.Scrollbar(root, orient='vertical',command = tablePanel.yview())
    sideBar["command"]=tablePanel.yview
    canvas.create_window(816, 360, window=sideBar)

你必须删除这些行:

backBar = sideBar = tk.Canvas(root, width=25, height=248, bg="LightGrey")
canvas.create_window(816, 360, window=sideBar)

#Sidebar
sideBar = tk.Canvas(root, width=18, height=150, bg="Grey")
canvas.create_window(816, 316, window=sideBar)

您还需要在桌面上进行一些更改,例如:

tablePanel = tk.Canvas(root, width=580, height=250, bg="Blue",scrollregion=(0,0,0,1200)) 

有关更多信息,请参阅滚动条的文档。

【讨论】:

  • 好的,谢谢。我现在用代码测试一下,然后返回结果。
  • 如果答案有帮助。请将其指定为有帮助。谢谢
  • “增加面板高度”是什么意思?(你的意思是让面板更大)
  • 我的脚本完成了这项工作。为了证明你必须在桌面上创建一些东西才能看到效果。
  • 我对我的回答做了一些修改。看看吧。
猜你喜欢
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多