当前位置: 首页 > 面试题库 >

如何将滚动条附加到文本小部件?

能旭
2023-03-14
问题内容

我试图将滚动条附加到“文本”字段,但无法这样做。这是代码段:

self.scroller = Scrollbar(self.root)
self.scroller.place(x=706, y=121)
self.outputArea = Text(self.root, height=26, width=100) 
self.outputArea.place(x=0, y=120)
self.scroller.config(command=self.outputArea.yview)
self.outputArea.config(state=DISABLED, yscrollcommand = self.scroller.set)

这段代码在我的文本字段旁边放置了一个非常小的滚动条(并且非常小,我的意思是您可以看到向上和向下箭头,但中间没有看到)。当文本字段填满时,我可以使用它滚动,但是至少有一种方法可以设置滚动条的高度,以使其看起来与文本字段的高度相同吗?


问题答案:

Tkinter具有三个
几何管理器
:包装,网格和位置。
通常建议将包装和网格放在适当的位置。


您可以使用 网格管理器的 选项
滚动条放置 在“ 文本” 小部件旁边。

将“ 滚动条” 小部件的 命令 选项设置为“文本”的 yview 方法。

scrollb = tkinter.Scrollbar(..., command=txt.yview)

将“ 文本” 小部件的 yscrollcommand 选项设置为Scrollbar的 set 方法。

txt['yscrollcommand'] = scrollb.set

这是一个使用ttk的工作示例:

import tkinter
import tkinter.ttk as ttk

class TextScrollCombo(ttk.Frame):

    def __init__(self, *args, **kwargs):

        super().__init__(*args, **kwargs)

    # ensure a consistent GUI size
        self.grid_propagate(False)
    # implement stretchability
        self.grid_rowconfigure(0, weight=1)
        self.grid_columnconfigure(0, weight=1)

    # create a Text widget
        self.txt = tkinter.Text(self)
        self.txt.grid(row=0, column=0, sticky="nsew", padx=2, pady=2)

    # create a Scrollbar and associate it with txt
        scrollb = ttk.Scrollbar(self, command=self.txt.yview)
        scrollb.grid(row=0, column=1, sticky='nsew')
        self.txt['yscrollcommand'] = scrollb.set

main_window = tkinter.Tk()

combo = TextScrollCombo(main_window)
combo.pack(fill="both", expand=True)
combo.config(width=600, height=600)

combo.txt.config(font=("consolas", 12), undo=True, wrap='word')
combo.txt.config(borderwidth=3, relief="sunken")

style = ttk.Style()
style.theme_use('clam')

main_window.mainloop()

这将解决您的部分 滚动条 是小的sticky='nsew'
你可以阅读→这里。

现在,对您有所帮助的事情是,不同的 Tkinter 小部件可以在同一程序中使用不同的 几何管理器 ,只要它们不共享同一父级即可

所述
tkinter.scrolledtext
模块包含一个称为类 ScrolledText 其是化合物插件(文本和滚动条)。

import tkinter
import tkinter.scrolledtext as scrolledtext

main_window = tkinter.Tk()

txt = scrolledtext.ScrolledText(main_window, undo=True)
txt['font'] = ('consolas', '12')
txt.pack(expand=True, fill='both')

main_window.mainloop()

这是方法实现是值得考虑看看。



 类似资料:
  • 问题内容: 在Linux中将文本附加到文件的最简单方法是什么? 我看了这个问题,但是可接受的答案使用了一个附加程序(),我相信应该有一个更简单的方法或类似方法。 问题答案: cat >> filename This is text, perhaps pasted in from some other source. Or else entered at the keyboard, doesn’t

  • 问题内容: 我正在建立一个带有包含日志消息的文本框的网站。使用AJAX更新日志。 每次更新时,我需要向下滚动文本框。怎么样? 问题答案: 处理Sys.WebForms.PageRequestManager.endRequest事件,并将文本框向下滚动:

  • 我有一个更新按钮按下的文本区域(此更新工作正常)。更新时,文本区域中会出现一个长列表,需要滚动条。然而,当我添加下面的最后两行时,不仅滚动条没有显示,文本也没有显示。如何修复此问题?(我不熟悉java swing,所以答案越简单越好)

  • 问题内容: 我有一个要在HTML5中添加一个滚动条的表。我希望表格显示十行,然后用户可以向下滚动以查看其他歌曲。如何添加滚动条? 这是我在HTML5中的表格代码: 这是我的CSS代码: 问题答案: 如果您有表列标题,并且不想滚动这些标题,那么此解决方案可以为您提供帮助: 这种解决方案需要和内部标签元素。 注意 :如果您确定垂直滚动条始终存在,则可以使用css3 calc属性使thead细胞与tbo

  • 问题内容: 我一直在尝试为tkinter treeview附加水平和垂直滚动条。在我的主要应用程序中,所有数据均来自sql数据库,因此我需要能够在一个适当的窗口中滚动浏览大量数据。我已经设法将Treeview放置在子窗口中,但是我仍然对如何附加有效的滚动条感到困惑。 尽管目前有一个垂直滚动条,但它似乎没有附加到树形视图上,也不会滚动浏览我输入的任何数据。 有没有一种方法可以在应用程序中放置垂直和水

  • 我有一个问题与列表视图。列表视图太长,它的一部分出现在窗口之外,但我不能附加滚动条。我尝试了许多不同的组合。我认为这个问题在于高度参数,但如果删除它,列表视图只显示第一个条目。 有什么方法可以让它滚动吗?