Tkinter 使文本小部件填充框架

Tkinter 使文本小部件填充框架,tkinter,tkinter-canvas,Tkinter,Tkinter Canvas,为什么文本小部件没有填充整个黄色框架? 我甚至确保了文本小部件的粘性-我遗漏了什么` (canvas\u frame是canvas\u frame的缩写-我给放入画布的框架起的名字 from tkinter import * enter code here class window: def __init__(self, root): root.grid_rowconfigure (0, weight=1) root.grid_columnconfigure(1, weigh

为什么文本小部件没有填充整个黄色框架? 我甚至确保了文本小部件的粘性-我遗漏了什么`

canvas\u frame
是canvas\u frame的缩写-我给放入画布的框架起的名字

from tkinter import *
enter code here
class window:
def __init__(self, root):
    root.grid_rowconfigure   (0, weight=1)
    root.grid_columnconfigure(1, weight=1)

    self.frame = Frame(root)
    self.frame.grid(row=0, column=1, sticky='nsew')
    self.frame.grid_columnconfigure(0, weight=1)
    self.frame.grid_rowconfigure(0, weight=1)

    self.canvas = Canvas(self.frame)
    self.can_frame = Frame(self.canvas, bg='yellow')
    self.canvas.grid(   row=0, column=0, sticky='nsew')
    self.can_frame.grid(row=0, column=0, sticky='nsew')

    self.canvas.grid_columnconfigure((0,1), weight=1)
    self.canvas.grid_rowconfigure(   (0,1), weight=1)

    self._frame_id = self.canvas.create_window((1,1), window=self.can_frame, anchor='sw', tags="self.frame")
    self.canvas.bind(    '<Configure>', self.resize_frame)
    self.can_frame.bind( '<Configure>', self.onFrameConfigure)

    inp = Text(self.can_frame, width=40, relief='groove')   # TEXT WIDGET CREATED HERE
    inp.grid(row=0, column=0, sticky='nsew') # it's sticky so why isn't it filling out the -
                                             # - yellow frame?

def resize_frame(self, e):
    self.canvas.itemconfig(self._frame_id, height=e.height, width=e.width)

def onFrameConfigure(self, e):
    # update scrollregion after starting 'mainloop'
    # when all widgets are in canvas
    self.canvas.configure(scrollregion=self.canvas.bbox('all'))
从tkinter导入*
在这里输入代码
类窗口:
定义初始化(自,根):
root.grid_rowconfigure(0,权重=1)
root.grid\u columnconfigure(1,权重=1)
self.frame=frame(根)
self.frame.grid(行=0,列=1,sticky='nsew')
self.frame.grid\u columnconfigure(0,权重=1)
self.frame.grid_rowconfigure(0,权重=1)
self.canvas=canvas(self.frame)
self.can\u frame=frame(self.canvas,bg='yellow')
self.canvas.grid(行=0,列=0,sticky='nsew')
self.can\u frame.grid(行=0,列=0,sticky='nsew')
self.canvas.grid\u columnconfigure((0,1),weight=1)
self.canvas.grid_rowconfigure((0,1),weight=1)
self.\u frame\u id=self.canvas.create\u window((1,1),window=self.can\u frame,anchor='sw',tags=“self.frame”)
self.canvas.bind(“”,self.resize_frame)
self.can\u frame.bind(“”,self.onFrameConfigure)
inp=Text(self.can_frame,width=40,relief='groove')#此处创建的文本小部件
inp.grid(row=0,column=0,sticky='nsew')#它是粘性的,为什么不填充-
#-黄色框架?
def RESIGH_框架(自身,e):
self.canvas.itemconfig(self.\u frame\u id,height=e.height,width=e.width)
def onFrameConfigure(自我,e):
#启动“mainloop”后更新scrollregion
#当所有小部件都在画布中时
configure(scrollregion=self.canvas.bbox('all'))
请不要发布没有画布的任何解决方案,我需要画布稍后创建一个滚动条,以便滚动所有不同的文本小部件。
谢谢!

在使用
网格时,您应该始终为至少一行和一列指定正权重。在您的情况下,您没有为
can\u frame
中的任何列指定权重,因此任何额外的空间都将被闲置。

代码的缩进被破坏。为什么要在框架中放置文本小部件在画布中?这很不寻常。你知道第一个元组表示什么吗?self.canvas.create_window((20,20))@Bjango:x和y坐标,窗口应该放在哪里。