如何使用.grid方法将滚动条添加到tkinter文本小部件

时间:2018-11-14 17:47:45

标签: python tkinter

我试图为我的文本小部件创建一个滚动条,但是,我似乎无法对滚动条进行grid(),因此该滚动条没有出现在文本小部件上。忽略变量Quote中的内容,它只是测试数据。

EventScrollBar= tk.Scrollbar(EventChoice)
EventText=tk.Text(EventChoice,height=25,width=50)
EventText.grid(row=3,column=1,columnspan=5)
EventScrollBar.config(command=EventText.yview)
EventText.config(yscrollcommand=EventScrollBar.set)
Quote=("""
...
wd""")
EventText.insert(tk.END,Quote)
EventText.config(state=tk.DISABLED)

2 个答案:

答案 0 :(得分:1)

您的代码显示没有尝试对滚动条进行网格化。

请参见以下示例:

512

以防万一,如果您在原始代码中使用import tkinter as tk root = tk.Tk() ybar= tk.Scrollbar(root) event_text=tk.Text(root, height=10, width=10) ybar.config(command=event_text.yview) event_text.config(yscrollcommand=ybar.set) event_text.grid(row=0, column=0) ybar.grid(row=0, column=1, sticky="ns") for i in range(100): event_text.insert("end", "{}\n".format(i)) root.mainloop() ,并在示例中在此处忘记了它,则可能是由于grid()造成的。

如果对文本小部件执行此操作,则它将位于滚动条的顶部。

在使用columnpan时尝试以下操作:

columnspan=5

答案 1 :(得分:0)

我给你两种制作Scrollbar的方法。

1)使用tk.Scrollbar

import tkinter as tk

root = tk.Tk()
EventText=tk.Text(root, height=10, width=50)
EventScrollBar= tk.Scrollbar(root, command=EventText.yview, orient="vertical")
EventScrollBar.grid(row=0, column=1, sticky="ns")
EventText.grid(row=0,column=0)
EventText.configure(yscrollcommand=EventScrollBar.set)
Quote=("""Suck\ne\ne\ne\ne\ne\ne\ne\ne\ne\nee\ne\ne\ne\ne\ne\ne\ne\nee\ned\ne\ne\nde\nd\ne\nded\nc\nc\nx\nc\nx\nc\nzc\ns\nds\nx\nwd\ns\nd\nwd""")
EventText.insert(tk.END,Quote)

root.mainloop()

2)使用ScrolledText

import tkinter as tk
from tkinter import scrolledtext

root = tk.Tk()
Quote=("""Suck\ne\ne\ne\ne\ne\ne\ne\ne\ne\nee\ne\ne\ne\ne\ne\ne\ne\nee\ned\ne\ne\nde\nd\ne\nded\nc\nc\nx\nc\nx\nc\nzc\ns\nds\nx\nwd\ns\nd\nwd""")
EventText = scrolledtext.ScrolledText(root, height=10, width=50)
EventText.insert("end", Quote)
EventText.grid(row=0, column=0)

root.mainloop()

enter image description here