Скрытие ввода в поле ввода CTk, получение данных из этого поля

Рейтинг: 0Ответов: 1Опубликовано: 07.05.2023

Начал осваивать CustomTkinter. Решил написать программу для авторизации пользователя и дальнейшей работы с ним, но оно ругается при попытке получить текст их поля ввода, также буду признателен если подскажите как заменять на звездочки каждый символ в этом поле.

import customtkinter
import customtkinter as CTk


class App(CTk.CTk):
    def __init__(self):
        super().__init__()

        self.geometry('460x370')
        self.title('Test')
        self.resizable(False, False)
        
        self.entrylogin = customtkinter.CTkEntry(self, placeholder_text="Логин:")
        self.entrylogin.grid(row=3, column=2, columnspan=2, padx=(130, 0), pady=(80, 20), sticky="nsew")
        self.entrypass = customtkinter.CTkEntry(self, placeholder_text="Пароль:")
        self.entrypass.grid(row=4, column=2, columnspan=2, padx=(130, 0), pady=(00, 20), sticky="nsew")

        self.main_button_1 = customtkinter.CTkButton(master=self, fg_color="transparent", border_width=2, text_color=("gray10", "#DCE4EE"), 
                                                     text='Войти', command=self.getpass())
        self.main_button_1.grid(row=5, column=2, padx=(150, 20), pady=(00, 20), sticky="nsew")
    
    def getpass(self):
        a = self.entry.get()
        print(a)

if __name__ == '__main__':
    app = App()
    app.mainloop()

Ответы

▲ 1Принят

Ошибка выдаётся т.к. в классе не создано поле entry поэтому строку a = self.entry.get() нужно заменить на a = self.entrypass.get(). Чтобы заменять символы на *, нужно добавить параметр show в CTkEntry. Также нужно заменить строку: text='Войти', command=self.getpass()) на text='Войти', command=self.getpass) В результате вот такой код:

import customtkinter
import customtkinter as CTk


class App(CTk.CTk):
    def __init__(self):
        super().__init__()

        self.geometry('460x370')
        self.title('Test')
        self.resizable(False, False)

        self.entrylogin = customtkinter.CTkEntry(self, placeholder_text="Логин:")
        self.entrylogin.grid(row=3, column=2, columnspan=2, padx=(130, 0), pady=(80, 20), sticky="nsew")
        self.entrypass = customtkinter.CTkEntry(self, placeholder_text="Пароль:", show="*")
        self.entrypass.grid(row=4, column=2, columnspan=2, padx=(130, 0), pady=(00, 20), sticky="nsew")

        self.main_button_1 = customtkinter.CTkButton(master=self, fg_color="transparent", border_width=2,
                                                     text_color=("gray10", "#DCE4EE"),
                                                     text='Войти', command=self.getpass)
        self.main_button_1.grid(row=5, column=2, padx=(150, 20), pady=(00, 20), sticky="nsew")

    def getpass(self):
        a = self.entrypass.get()
        print(a)


if __name__ == '__main__':
    app = App()
    app.mainloop()