【发布时间】:2019-11-28 20:08:04
【问题描述】:
我正在制作文本框的网格布局,类似于 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"))
【问题讨论】:
-
frame.pack_propagate(False)?并且框架不会尝试更改尺寸以适合儿童/儿童尺寸。 effbot.org:pack_propagate(flag) -
谢谢,这允许框架改变大小。非常感谢。
标签: python python-3.x tkinter