特金特 如何设置滚动条



我今天从Tkinter开始,遇到了一些问题。 我的目标是打开一个窗口,该窗口加载一个 csv 文件并将列名输出为每个值的按钮和行作为标签。 现在我希望能够向下滚动标签。

我研究了这个主题,现在我明白我需要在添加滚动条之前构图我的按钮和标签。 使用下面的代码,我无法滚动,滚动条下降到列表的末尾(而不是窗口的末尾(。

现在我的输出如下所示:窗口的输出

带有以下错误消息:

TclError: unknown option "-yscrollcomand"

我的代码:

def open():
# add new Window
root1 = Toplevel()
root1.title("this_is_a_first_try.csv")
root1.iconbitmap("logo.ico")
root1.configure(bg= "white")
root1.geometry("1000x500")
# add Data Frame
data = pd.read_csv("this_is_a_first_try.csv")
df = pd.DataFrame(data)
#create canvas
canvas_main = Canvas(root1, bg= "gray")
canvas_main.grid(row= 2, column= 1, sticky= "news", columnspan= len(df.columns))
for index,title in enumerate(df.columns): # generating Buttons for headers of column
if index == 0:
Button(canvas_main, text= "Index").grid(row= 2, column= 1, sticky= W+E) # generating header for index-column
else:
Button(canvas_main, text= title).grid(row= 2, column= index + 1, sticky= W+E)
for index1, row in enumerate(df.values): # generating Label-Widgets for values
for index2, value in enumerate(row):
Label(canvas_main, text= value, anchor= W).grid(row= index1 + 3, column= index2 + 1, sticky= W+E)

scrollbar = Scrollbar(root1, orient= "vertical", command= canvas_main.yview)
scrollbar.grid(row= 2, column= len(df.columns) + 1, sticky= "ns")
canvas_main.configure(yscrollcomand= scrollbar.set)

我在互联网上找不到任何解决方案, 如果有人能给我一个提示,我会很感激。

提前谢谢。

您可以使用列表框。下面是一个带有列表框的简单示例:

from tkinter import *
window = Tk()
window.geometry("500x500")
s = Scrollbar(window)
s.pack(side = RIGHT, fill = Y)
l = Listbox(window, height = 500, width = 500)
l.pack()

for i in range(1000):
l.insert(END, i)
l.config(yscrollcommand = s.set)
s.config(command = l.yview)
window.mainloop()

您可以获取.csv文件中的所有元素,然后将它们放入列表中。然后,只需使用 for 循环将所有元素插入列表框,然后完成!!

希望这有帮助!

最新更新