tkinter多个文本区域使用鼠标滚轮垂直滚动

时间:2019-02-09 12:59:27

标签: python-3.x tkinter

我想创建一个带有线条条的文本区域(左侧的线条显示行号),当我用鼠标滚轮滚动时,它必须同时滚动文本区域和线条

click here to view code

感谢支持

1 个答案:

答案 0 :(得分:0)

我无法打开你的图片,但让我尝试帮助您。

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

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

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

txt['yscrollcommand'] = scrollb.set

您需要执行此操作,以使txt和滚动条对鼠标滚轮做出反应。

要将行号添加到txt中,您可以使用循环,每次执行循环时,将行号添加到下一行。

这是一个带有滚动条的工作代码,可对鼠标滚轮做出反应:

import tkinter as tk

class App(object):

def __init__(self):
    self.root = tk.Tk()

# create a Frame for the Text and Scrollbar
    txt_frm = tk.Frame(self.root, width=600, height=600)
    txt_frm.pack(fill="both", expand=True)
    # ensure a consistent GUI size
    txt_frm.grid_propagate(False)
    # implement stretchability
    txt_frm.grid_rowconfigure(0, weight=1)
    txt_frm.grid_columnconfigure(0, weight=1)

# create a Text widget
    self.txt = tk.Text(txt_frm, borderwidth=3, relief="sunken")
    self.txt.config(font=("consolas", 12), undo=True, wrap='word')
    self.txt.grid(row=0, column=0, sticky="nsew", padx=2, pady=2)

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

app = App()
app.root.mainloop()