Python ttk滚动条错误作为Toplevel()的子级,但作为Tk()的子级
我从web上获取了一个代码示例,它作为创建为Tk()的根窗口的子窗口工作。当我试图将它概括为Toplevel()的子对象时,我得到一个错误,指示您无法将滚动条放入Toplevel().Frame()中。我不明白为什么会有这种差异,因为Tk()和Toplevel()应该会产生类似的结果 确切的错误消息是: _tkinter.TclError:无法将.19084144放入其中.18651952.19084112 或无法将滚动条放在Toplevel()中。Frame()中Python ttk滚动条错误作为Toplevel()的子级,但作为Tk()的子级,python,tkinter,ttk,Python,Tkinter,Ttk,我从web上获取了一个代码示例,它作为创建为Tk()的根窗口的子窗口工作。当我试图将它概括为Toplevel()的子对象时,我得到一个错误,指示您无法将滚动条放入Toplevel().Frame()中。我不明白为什么会有这种差异,因为Tk()和Toplevel()应该会产生类似的结果 确切的错误消息是: _tkinter.TclError:无法将.19084144放入其中.18651952.19084112 或无法将滚动条放在Toplevel()中。Frame()中 我用stackoverflo
我用stackoverflow广泛地学习了很多,非常感谢这里难以置信的专业知识财富。坦率地说,我很尴尬,我没能弄明白这一点。感谢您期待您提供的任何帮助。您的问题中没有足够的细节可以确定,但问题可能源于您在创建滚动条时没有提供父参数。这意味着滚动条将始终在根窗口中创建。如果您随后尝试将其放在另一个顶层,您将得到一个类似于您报告的错误 您的问题中没有足够的细节可以确定,但问题可能源于您在创建滚动条时没有给出
父参数。这意味着滚动条将始终在根窗口中创建。如果您随后尝试将其放在另一个顶层,您将得到一个类似于您报告的错误 您能否显示给出您报告的确切错误的代码行?我不确定我是否看到了任何会导致该错误的代码。另外,一行代码只会给出一个错误,所以当你说它给出两个不同错误中的一个时,不清楚你的意思是什么。显示准确的堆栈跟踪可能会有所帮助。@BryanOakley正是这样。正确的代码行是vsb=Scrollbar(parent,orient=“vertical”,command=self.tree.yview)
。布莱恩,我将借此机会提到,你的回答对我(和其他人)的帮助远远超过了人们对你的感激之情。谢谢你,克里斯。你能展示一下你报告的错误代码行吗?我不确定我是否看到了任何会导致该错误的代码。另外,一行代码只会给出一个错误,所以当你说它给出两个不同错误中的一个时,不清楚你的意思是什么。显示准确的堆栈跟踪可能会有所帮助。@BryanOakley正是这样。正确的代码行是vsb=Scrollbar(parent,orient=“vertical”,command=self.tree.yview)
。布莱恩,我将借此机会提到,你的回答对我(和其他人)的帮助远远超过了人们对你的感激之情。谢谢你,克里斯。
from tkinter import *
from tkinter.ttk import *
class columnList(object):
def __init__(self,parent,header,dataList):
self.tree = None
self._setup_widgets(parent,header)
self._build_tree(header,dataList)
def _setup_widgets(self,parent,header):
treeFrame = Frame(parent)
treeFrame.pack(fill='both', expand=True)
# create a treeview with a vertical scrollbar
self.tree = Treeview(treeFrame, columns=header, show="headings")
vsb = Scrollbar(orient="vertical",command=self.tree.yview)
self.tree.configure(yscrollcommand=vsb.set)
self.tree.grid(column=0, row=0, sticky='nsew', in_=treeFrame)
vsb.grid(column=1, row=0, sticky='ns', in_=treeFrame)
treeFrame.grid_columnconfigure(0, weight=1)
treeFrame.grid_rowconfigure(0, weight=1)
def _build_tree(self,header,dataList):
for col in header:
self.tree.heading(col, text=col.title())
for item in dataList:
self.tree.insert('', 'end', values=item)
# the test data ...
oil_header = ['oil', 'filter', 'cost']
oil_list = [
('synthetic', 'paper', '63.38') ,
('natural', 'reusable', '47.59') ]
car_header = ['car', 'repair', 'cost', 'code']
car_list = [
('Hyundai', 'brakes', '273.80', '34') ,
('Honda', 'light', '85.70', '78')]
root = Tk()
top = Toplevel()
# this succeeds
invoiceMenu = columnList(root,car_header,car_list)
# this fails as
# _tkinter.TclError: can't put .19084144 inside .18651952.19084112
# or... can't put scrollbar inside Toplevel().Frame()
oilChangeMenu = columnList(top,oil_header,oil_list)
root.mainloop()