Tkinter:'NoneType'对象没有属性'bind_all'



我正在使用pandastable在我的tkinter窗口中实现pandas数据帧,但是,出现了一个错误:

"NoneType"对象没有属性"bind_all">

当我使用这行时,不断出现:

table = pt = Table(window, dataframe=stats)

完整代码:

import tkinter as tk
import pandas as pd
from pandastable import Table, TableModel
places = {"Place":['1st'], "Name":['Derik'], "Time":['1.89']}
window = tk.Tk()
stats = pd.DataFrame.from_dict(places)
table = Table(window, dataframe=stats)

错误是因为pandastable希望您将小部件放在容器中,而不是窗口中。您可以通过检查pandastable源代码的第88行和第264行来找到这一点:

class Table(Canvas):
...
def __init__(self, parent=None, model=None, dataframe=None, ...):
self.parentframe = parent # Line 88
...
def doBindings(self):
...
self.parentframe.master.bind_all("<KP_8>", self.handle_arrow_keys) # Line 264

正如您所看到的,self.parentframe是您传入的父级,在您的情况下是window。在第264行中,他们访问self.parentframemaster,这是None,因为根窗口没有主窗口。但是像框架这样的其他小部件可以。

所以你所要做的就是,把这个小部件放在一个容器里,比如Frame:

frame = tk.Frame(window)
frame.pack()
table = Table(frame, dataframe=stats)
table.show()

最新更新