我正在制作文本框的网格布局,类似于Microsoft Excel。
我已经制作了一个画布(在框架内),并使用create_window
将一个包含100个文本框的框架(每个框架在框架内)添加到画布中,以便能够使用右侧和底部的滚动条,与Microsoft Excel中的滚动条非常相似。文本框每个都在自己的框架中的原因是,这样我可以通过使文本框填充框架来定义其大小(以像素为单位)。我的问题是,当我设置容纳文本框的框架的尺寸时,它根本不会改变框架的尺寸。默认情况下,它是文本框的大小,就好像框架不存在一样。请帮忙?下面的代码:
def __init__(self, master):
master.title('Table Viewmode')
#'widthxheight+Xoffset+Yoffset'
master.geometry('800x600+500+200')
self.tableContainer = Frame(master)
self.tableContainer.pack(side="left", fill="both", expand=True)
#Frame and Canvas
self.tableCanvas = Canvas(self.tableContainer)
self.tableFrame = Frame(self.tableCanvas)
#Canvas stretch config
self.tableCanvas.grid(row=0, column=0, sticky=N+S+E+W)#.pack(side="left", fill="both", expand=True)
self.tableContainer.grid_columnconfigure(0, weight=1)
self.tableContainer.grid_rowconfigure(0, weight=1)
#Scrollbars
self.yscrollBar = Scrollbar(self.tableContainer, orient=VERTICAL,
command=self.tableCanvas.yview)
self.yscrollBar.grid(row=0, column=1, sticky=N+S)
self.tableCanvas.config(yscrollcommand=self.yscrollBar.set)
self.xscrollBar = Scrollbar(self.tableContainer, orient=HORIZONTAL,
command=self.tableCanvas.xview)
self.xscrollBar.grid(row=1, column=0, sticky=W+E)
self.tableCanvas.config(xscrollcommand=self.xscrollBar.set)
self.xscrollBar.config()
self.tableCanvas.create_window((4,4), window=self.tableFrame, anchor="nw")
self.createTable(10,10)
self.tableFrame.bind("<Configure>", self.frameConfigureHandler)
#Lines of code in question
def createTable(self, rows, columns):
self.frameList = []
for row in range(0, rows):
for column in range(0, columns):
frame = Frame(self.tableFrame)
frame.config(width=10,height=10)
text = Text(frame)#, height=1, width=2) I can change the size of the text boxes, this works fine.
text.insert(END, str(row)+str(column))
text.pack(side=LEFT, expand=True, fill=BOTH)
frame.grid(row = row, column = column)
def frameConfigureHandler(self, event):
self.tableCanvas.configure(scrollregion=self.tableCanvas.bbox("all"))
答案 0 :(得分:0)
frame.pack_propagate(False),这将阻止框架符合其子项的大小,并允许自定义框架的大小。