CustomTkinter中CTkEntry获取输入值失败问题求助
CTkEntry获取输入值为空的解决方案
问题根源
- 提前获取输入值:你在
App类初始化时就调用了self.entry.get(),此时输入框还未接收用户输入,得到的是空值,后续用户输入不会更新这个变量。 - 全局函数无法访问类内组件:
sent是全局函数,无法直接访问App类中的entry组件,也拿不到用户实时输入的内容。
修正后的代码
# Importing Libraries import tkinter import tkinter.messagebox import customtkinter import firebase_admin from firebase_admin import credentials from firebase_admin import firestore from firebase import firebase cred = credentials.Certificate("serviceAccount.json") firebase_admin.initialize_app(cred) customtkinter.set_appearance_mode("System") # Modes: "System" (standard), "Dark", "Light" customtkinter.set_default_color_theme("blue") # Themes: "blue" (standard), "green", "dark-blue" firestore_db = firestore.client() class App(customtkinter.CTk): def __init__(self): super().__init__() # configure window self.title("CustomTkinter complex_example.py") self.geometry(f"{1100}x{580}") # configure grid layout (4x4) self.grid_columnconfigure(1, weight=1) self.grid_columnconfigure((2, 3), weight=0) self.grid_rowconfigure((0, 1, 2), weight=1) # create main entry and button self.entry = customtkinter.CTkEntry(self, placeholder_text="Enter Your Message") self.entry.grid(row=3, column=1, columnspan=2, padx=(20, 0), pady=(20, 20), sticky="nsew") # 将sent改为类方法,通过self调用 self.main_button_1 = customtkinter.CTkButton(master=self, text="Sent", fg_color="transparent", border_width=2, command=self.sent, text_color=("gray10", "#DCE4EE")) self.main_button_1.grid(row=3, column=3, padx=(20, 20), pady=(20, 20), sticky="nsew") # 改为类内方法,点击时实时获取输入值 def sent(self): input_text = self.entry.get() print(input_text) app = App() app.mainloop()
关键修改点
- 将
sent函数移到App类内部,作为类的方法,这样可以通过self.entry.get()实时获取输入框内容。 - 按钮的
command参数改为self.sent,绑定类内方法。 - 移除初始化时提前获取输入值的代码,改为在点击按钮时动态获取当前输入。
内容的提问来源于stack exchange,提问作者CodeFoxy
相关产品推荐
相关产品推荐

