Python 如何让文本框在插入的小部件上水平滚动?

Python 如何让文本框在插入的小部件上水平滚动?,python,tkinter,scrollbar,Python,Tkinter,Scrollbar,如果我创建一个文本框,并用比文本框宽度长的文本填充它,滚动条工作正常。 像这样: import tkinter as tk from tkinter import ttk root = tk.Tk() vbar = ttk.Scrollbar(root, orient="horizontal") vbar.grid(column=0, row=2, sticky="NWSE") text_box = tk.Text(root, width=50, height=30, xscrollcomm

如果我创建一个文本框,并用比文本框宽度长的文本填充它,滚动条工作正常。 像这样:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

vbar = ttk.Scrollbar(root, orient="horizontal")
vbar.grid(column=0, row=2, sticky="NWSE")
text_box = tk.Text(root, width=50, height=30, xscrollcommand=vbar.set, wrap=tk.NONE)
text_box.grid(column=0, row=0, padx=(5, 5))
text_box.grid_propagate(0)
vbar.config(command=text_box.xview)

for n in range(0, 60):
    text_box.insert(tk.END,"*")

root.mainloop()
但是我想在这个主文本框中插入文本框,并在它们之间水平滚动。它插入了两个文本框,但滚动条未激活,因此我无法查看第三个文本框。我不希望文本框扩展以容纳嵌套的文本框,因此
text\u box.grid\u propagate(0)

有没有办法做到这一点

这是代码

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

vbar = ttk.Scrollbar(root, orient="horizontal")
vbar.grid(column=0, row=2, sticky="NWSE")
text_box = tk.Text(root, width=50, height=30, xscrollcommand=vbar.set, wrap=tk.NONE)
text_box.grid(column=0, row=0, padx=(5, 5))
text_box.grid_propagate(0)
vbar.config(command=text_box.xview)

tweet_windows = ["Window 1", "Window 2", "Window 3"]

for n in range(0, len(tweet_windows)):
    tweet_windows[n] = tk.Text(text_box, width=23)
    tweet_windows[n].grid(column=n, row=1)

root.mainloop()

好吧,我知道了。您需要生成需要嵌套的文本小部件的数量,而不是
grid
它们。然后使用主文本小部件的
.create\u window
方法将它们放在主文本小部件中。嵌套的小部件可以以通常的方式被引用和更新

这是密码

import tkinter as tk
from tkinter import ttk

root = tk.Tk()

vbar = ttk.Scrollbar(root, orient="horizontal")
vbar.grid(column=0, row=2, sticky="NWSE")
text_box = tk.Text(root, width=50, height=30, xscrollcommand=vbar.set, wrap=tk.NONE)

text_box.grid(column=0, row=0, padx=(5, 5))
text_box.grid_propagate(0)
vbar.config(command=text_box.xview)

text1 = tk.Text(width=23)
text1.insert(tk.END, "test")
text2 = tk.Text(width=23)
text2.insert(tk.END, "test2")
text3 = tk.Text(width=23)
text3.insert(tk.END, "test3")

text_box.window_create(tk.END, window=text1)
text_box.window_create(tk.END, window=text2)
text_box.window_create(tk.END, window=text3)

text3.insert(tk.END, "\nMore text")

root.mainloop()

谢谢你的提醒。我已将其添加到代码中。在复制和粘贴过程中丢失了它。你说的“移动+滚动”是什么意思?没关系。初始代码段允许用户在windows中使用shift+滚动进行水平滚动。当最大的文本框有焦点时,这个也有。哦,鼠标右键。我不知道你可以用鼠标滚轮水平滚动,哈哈,很有趣。我会调查更多的,但在我的优先事项清单上并没有那么重要。谢谢你提供的信息。