整个窗口的Python Tkinter滚动条

整个窗口的Python Tkinter滚动条,python,tkinter,Python,Tkinter,有没有一种方法可以将滚动条添加到我的整个窗口中,而不将所有内容放入框架中?我已经用.grid设置好了所有东西,我不喜欢在所有东西周围包装一个框架的想法 root = Tk() root.maxsize(900,600) circus()#calls the function to set up everything root.mainloop() 您可以将scrollbarr设置为root scrollderoot = tkinter.Scrollbar(orient="vertical"

有没有一种方法可以将滚动条添加到我的整个窗口中,而不将所有内容放入框架中?我已经用.grid设置好了所有东西,我不喜欢在所有东西周围包装一个框架的想法

root = Tk()
root.maxsize(900,600)

circus()#calls the function to set up everything

root.mainloop()

您可以将scrollbarr设置为root

scrollderoot = tkinter.Scrollbar(orient="vertical", command=root.yview)
scrollderoot.grid(column=5, row=0, sticky='ns', in_=root) #instead of number 5, set the column as the expected one for the scrollbar. Sticky ns will might be neccesary.
root.configure(yscrollcommand=scrollderoot.set)
老实说,我没试过,但“应该”行得通。祝你好运。

来自伟大的:

在Tkinter中,滚动条是一个单独的小部件,可以附加到 任何支持标准滚动条界面的小部件。这些小部件 包括:

  • Listbox小部件
  • 文本小部件
  • 画布小部件
  • 条目小部件
因此,不能直接在帧中使用滚动条。您可以创建自己的支持滚动条接口的Frame子类


在上面列出的4个小部件中,只有一个允许在其中使用其他小部件:画布。您可以使用画布来显示可滚动的内容,但在画布中放置小部件并不使用pack或grid,而是使用显式像素位置(即在画布上绘制)。

如何将滚动条添加到tkinter中的完整窗口

以下是python 3的答案


从tkinter进口*
从tkinter导入ttk
root=Tk()
title('完整窗口滚动X Y滚动条示例')
根几何(“1350x400”)
#创建一个主框架
主框架=框架(根)
主框架包(填充=两者,扩展=1)
#为X滚动条创建框架
秒=帧(主帧)
二次包装(填充=X,侧面=底部)
#创建画布
我的画布=画布(主框架)
my_canvas.pack(side=左侧,fill=两侧,expand=1)
#将滚动条添加到画布
x_scrollbar=ttk.scrollbar(秒,方向=水平,命令=我的画布.xview)
x_滚动条。包装(侧面=底部,填充=x)
y_scrollbar=ttk.scrollbar(主框架,方向=垂直,命令=我的画布.yview)
y_滚动条.pack(侧=右,填充=y)
#配置画布
my_canvas.configure(xscrollcommand=x_scrollbar.set)
my_canvas.configure(yscrollcommand=y_scrollbar.set)
my_canvas.bind(“,lambda e:my_canvas.config(scrollregion=my_canvas.bbox(ALL)))
#在画布内创建另一个框架
第二帧=帧(我的画布)
#将新框架添加到画布中的窗口中
my_canvas.create_window((0,0),window=second_frame,anchor=“nw”)
对于范围内的对象(100):
按钮(第二帧,text=f“Button{thing}”).grid(行=5,列=thing,pady=10,padx=10)
对于范围内的对象(100):
按钮(第二帧,text=f“Button{thing}”).grid(行=thing,列=5,pady=10,padx=10)
root.mainloop()
可能重复:“在上面列出的4个小部件中,只有一个允许在其中使用其他小部件:画布”-这不是一个正确的说法。您可以在文本小部件中嵌入小部件。