【发布时间】:2019-10-09 13:30:59
【问题描述】:
我正在尝试在更大的程序中实现滚动条。我正面临一些 AttributeError 问题。所以,为了解决这个问题,我制作了一个更简单的代码,如下所示。
-滚动条必须水平滚动画布而不是文本小部件。
-这个更简单的程序只有 2 个 tk.Text 小部件(由 'side="left"' 粘合)
-更大的程序有 18 个 tk.Text 所以我真的需要水平滚动条
-我也面临一些画布问题,因为文本小部件不在画布内。
我尝试了一些已经存在的解决方案,但是在程序方面存在一些分歧,我不能很好地阅读(因为我不是 tkinter 的专业人士)。有人可以帮我吗,我的代码中缺少什么来使这个 AtrributeError 消失?
我需要画布内的 tk.Texts 并且画布本身是可滚动的
编辑1: 现在程序是这样的,但是滚动条不能滚动
import tkinter as tk
from tkinter import ttk
class Test(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.canvas = tk.Canvas(master)
self.canvas.pack(side='top')
self.frame = ttk.Frame(self.canvas)
self.frame.pack(side='bottom', fill='x', expand=True)
self.text = tk.Text(self.canvas, width= 5).pack(side='left')
self.text2 = tk.Text(self.canvas, width=5).pack(side='left')
self.text3 = tk.Text(self.canvas, width=5).pack(side='left')
self.text4 = tk.Text(self.canvas, width=5).pack(side='left')
self.text5 = tk.Text(self.canvas, width=5).pack(side='left')
self.text6 = tk.Text(self.canvas, width=5).pack(side='left')
self.text7 = tk.Text(self.canvas, width=5).pack(side='left')
self.text8 = tk.Text(self.canvas, width=5).pack(side='left')
self.scroll = ttk.Scrollbar(self.frame, orient='horizontal', command=self.canvas.xview)
self.scroll.pack(side='bottom', fill='x')
self.canvas['xscrollcommand'] = self.scroll
self.canvas["scrollregion"] = self.canvas.bbox('all')
root = tk.Tk()
root.geometry('100x300')
test = Test(root)
root.mainloop()
【问题讨论】: