我正在研究如何使用Tkinter(CustomTkinter),我想使用Tkinter GRID布局显示pandastable,而不是PACK布局。下面的代码将显示表格,但它占用了整个框架。
整个项目非常庞大和复杂,但以下是相关代码:
import customtkinter as ctk
import pandas as pd
from tkinter import END
from pandastable import Table
class DisplayTable(ctk.CTkFrame):
def __init__(self, parent):
ctk.CTkFrame.__init__(self, parent)
label = ctk.CTkLabel(self, text="DisplayTable")
label.grid(row=0, column=1, padx=10, pady=10, columnspan=4)
df = pd.read_csv("data/data_points.csv")
self.table = Table(self, dataframe=df, showtoolbar=True, showstatusbar=True)
self.table.grid(row=1, column=1, padx=10, pady=10, columnspan=4)
self.table.show()
我的问题是如何将GRID布局应用到pandastable,以便在屏幕顶部有一个标签,而pandastable在下面?
1条答案
按热度按时间7tofc5zh1#
首先,我认为CustomTkinter中的绑定可能有一些问题,因为我得到了与这里相同的错误:AttributeError in Ctk由于某些原因,Ctk不允许
bind_all
解决方案应该是将表的主帧作为一个单独的框架。当我使用普通的Tkinter时,这个效果很好(没有这个额外的框架,表也占据了整个窗口):
如果我用CustomTkinter做同样的事情,我会得到我在开始时提到的AttributeError。
无论如何都要使用CustomTkinter的解决方案(使用风险自担,因为它涉及更改代码作者考虑的行为):
使用Ctk的代码:
当你得到这个错误:
按照
bind_all
方法的链接,注解掉raise AttributeError
,只添加pass
这让它工作,但我不知道为什么
bind_all
可以result in undefined behavior
使用CustomTkinter所以再次,使用风险自担。