使用https://github.com/TomSchimansky/CustomTkinter/wiki/CTkTabview#cgetattribute_name推荐的类,我添加了一个整体的OK按钮,当所有选项卡上的所有小部件都已填充时,可以单击该按钮。
在下面只有一个小部件的示例中,MyTabView中的第一个打印响应是
Something
的初始值,但我想知道对所有小部件进行所有更改后的最终响应。
import customtkinter as ctk
class MyTabView(ctk.CTkTabview):
def __init__(self, master, **kwargs):
super().__init__(master, **kwargs)
self.add("tab 1")
self.add("tab 2")
self.Entry = ctk.CTkEntry(master=self.tab('tab 1'), textvariable=ctk.StringVar(value='Something'))
self.Entry.grid(row=0, column=0, padx=20, pady=10)
global response
response = self.Entry.get()
print(response)
class App(ctk.CTk):
def __init__(self):
super().__init__()
self.tab_view = MyTabView(master=self)
self.tab_view.grid(row=0, column=0, padx=20, pady=20)
self.OKButton = ctk.CTkButton(self, text='OK', command=lambda: self.fn_okay())
self.OKButton.grid(row=3, column=1, columnspan=1, padx=20, pady=20, sticky='ew')
def fn_okay(self):
response = MyTabView.Entry.get() # Gives a no attribute error
print(response)
app = App()
app.mainloop()
单击 OK 按钮时,如何获取 App 类中的所有最终值?我的
response = MyTabView.Entry.get()
尝试导致无属性错误,但这里需要一些东西,否则打印的响应将保持不变。
另一种尝试是观察变量[并调用函数来记录最新值],与Tkinter:如何检查特定帧的任何小部件是否已更改?但这似乎不适用于 ctk .
@Tranbi 在评论中发布了一个直接的答案 - 使用实例化的 Entry:self.tab_view.Entry.get()