Ответы пользователя по тегу Tkinter
  • Как исправить проблему с insert в питоне(TKINTER)?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Вы сначала закрываете окно, затем пытаетесь получить данные, которые были в этом окне.

    Куда нибудь повыше EFOPENFile = i_nameOF.get("1.0", "end-1c") закиньте, до OpenFile.destroy(). Ну и два дестроя у вас
    Ответ написан
  • Почему кнопка открывает сразу два окна, вместо одного?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Ваше лишнее окно создается функцией mondays. Помимо объявления этой функции, в коде всего два её упоминания. Первое - бинд на кнопку "Monday", второе - вызов тут monregles = Toplevel(mondays()). Нажимаете кнопку "Registration", она вызывает функцию "reg1", в ней идет вызов mondays, которая создает лишнее окно.

    В reg1 удалите вызов mondays
    Ответ написан
    1 комментарий
  • Почему слова не отображаются?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Потому что нужно получить значение текстового поля, а вы обращаетесь к самому объекту

    message = message_export.get('1.0', 'end')
    Ответ написан
    1 комментарий
  • Почему при выходе добавляется \n?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    \n - обычный управляющий символ, обозначающий новую строку. Текст ведь должен как-то разбиваться на строки.
    Добавляется он в самом конце в виджете, не совсем понятно зачем, ну да ладно. Сделайте просто strip() или rstrip()
    Ну и удалить пробелы можно было бы

    zxcword = entword.get(1.0, END).strip().replace(' ', '').split(",")
    Ответ написан
    Комментировать
  • Почему интерфейс находится посередине и как это исправить?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Прикрепите их к верху.
    l1.pack(side=LEFT, padx=10, pady=0, anchor='n')
    anchor может быть n, ne, e, se, s, sw, w, nw, or center, как на компасе
    Ответ написан
    Комментировать
  • Как поставить опцию show (виджет Entry) в режим по умолчанию или же просто убрать?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Можно менять параметры через метод configure. Текущий параметр можно достать отсюда: txt.config()['show'][-1]

    from tkinter import *  
    
    
    def show_password():
        
        current_state = txt.config()['show'][-1]
    
        if current_state == '*':
            txt.configure(show='')
        else:
            txt.configure(show='*')
    
    
    window = Tk()  
    window.title("title")  
    txt = Entry(window,width=10, show='*')
    txt.grid(column=1, row=0)  
    btn1 = Button(window, text="Показать пароль", command=show_password)  
    btn1.grid(column=3, row=0)  
    window.mainloop()
    Ответ написан
    Комментировать
  • Как в python tkinter через изменений PhotoImage узнать размер изображения?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    my_image.width - метод, о чем и говорит ошибка. Скобки () добавьте. Ну и он возвращает уже число, так что int не нужен
    Ответ написан
    Комментировать
  • Как узнать тип файла в python tkinter fd.asksaveasfilename?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Можно так попробовать

    file_name = fd.asksaveasfilename(defaultextension=".*",
            filetypes=(("TXT files", "*.txt"),
                       ("HTML files", "*.html;*.htm"),
                       ("All files", "*.*")))
    print(file_name.split('.')[-1])
    Ответ написан
    Комментировать
  • Как значение переменной перенести из одной функции в другую?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Какие глобал? Хватит чушь нести.

    Есть оператор return, который возвращает значение из функци.
    https://pythonworld.ru/tipy-dannyx-v-python/vse-o-...
    https://younglinux.info/python/return

    Добавляете return и нужное значение в то место, где его нужно вернуть. Тут, допустим, в конце функции
    def login_check ():
        N = name_entry.get()
        if len(str(N)) > 20:
            l20 = Label( text = ' это имя слишком длинное ', font = 'Consolas' )
            l20.grid( row = 13, column = 0, padx = 1, pady = 1 )
            print("l1")# Эта строка что бы я видел сработала ли функция
            login_p = False
        elif len(str(N)) < 3:
            l3 = Label( text = ' это имя слишком короткое ', font = 'Consolas' )
            l3.grid( row = 13, column = 0, padx = 1, pady = 1 )
            print("l2")# Эта строка что бы я видел сработала ли функция
            login_p = False
        else: 
            l0 = Label( text = '                             ', font = 'Consolas' )
            l0.grid( row = 13, column = 0, padx = 1, pady = 1 )
            print("l3")# Эта строка что бы я видел сработала ли функция 
            login_p = True
    
        return login_p

    Потом так же добавляете return во все нужные вам функции.

    Дальше просто все значения присваиваете в переменные в функции Ввод

    def Ввод ( event ):
        TWp = TWpassword_chek()
        login_p = login_check()
        password_p = password_check()
    Ответ написан
    Комментировать
  • Не открывается окно Tkinter python?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Код не доходит до screen.mainloop(), потому что вы вызвали зачем-то бесконечный цикл
    reger = True
    while reger:

    Убирайте его.

    Должно выглядеть как-то так:
    from tkinter import *
    
    
    
    screen = Tk()
    
    screen.resizable( width = False, height = False )
    screen.geometry( '410x230' )
    screen.title( 'Регистрация' )
    
    
    
    def Ввод ( event ):
    
        login_p = name_entry.get()
        password_p = password_entry.get()
    
        login_check()
        password_check()
        print("логин + пароль" + str(login_p ) + str(password_p))
        if login_p == password_p:
            vse = Label( text = 'Вы зарегистрированы ', font = 'Consolas' ) 
            vse.grid( row = 0, column = 1, padx = 1, pady = 1 )
    
    
    #проверка имени 
    def login_check ():
        N = name_entry.get()
        if len(str(N)) > 20:
            l20 = Label( text = 'это имя слишком длинное', font = 'Consolas' )
            l20.grid( row = 9, column = 0, padx = 1, pady = 1 )
            print("l1")# Эта строка что бы я видел сработала ли функция
            login_p = 9
        elif len(str(N)) < 3:
            l3 = Label( text = 'это имя слишком короткое', font = 'Consolas' )
            l3.grid( row = 10, column = 0, padx = 1, pady = 1 )
            print("l2")# Эта строка что бы я видел сработала ли функция
            login_p = 10
        else: 
            print("l3")# Эта строка что бы я видел сработала ли функция 
            login_p = 1
    
    
    #password
    def password_check ():
        P = password_entry.get()
        if len(str(P)) < 5:
            p1 = Label ( text = "Слишком короткий пароль", font = 'Consolas' ) 
            p1.grid( row = 11, column = 0, padx = 1, pady = 1 )  
            print("1")# Эта строка что бы я видел сработала ли функция
            password_p = 2   
        elif str(P) == "abcde":
            p2 = Label ( text = "Слишком простой пароль", font = 'Consolas' )
            p2.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("2")# Эта строка что бы я видел сработала ли функция
            password_p = 3
        elif str(P) == "ABCDE":
            p3 = generateLabel ( text = "Слишком простой пароль", font = 'Consolas' )
            p3.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("3")# Эта строка что бы я видел сработала ли функция
            password_p = 4
        elif str(P) == "12345":
            p4 = Label ( text = "Слишком простой пароль", font = 'Consolas' )
            p4.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("4")# Эта строка что бы я видел сработала ли функция
            password_p = 5
        elif str(P) == "123456789":
            p5 = Label ( text = "Слишком простой пароль", font = 'Consolas' )
            p5.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("5")# Эта строка что бы я видел сработала ли функция
        elif str(P) == "987654321":
            p6 = Label ( text = "Слишком простой пароль", font = 'Consolas' )
            p6.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("6")# Эта строка что бы я видел сработала ли функция
            password_p = 6
        elif str(P) == "абвгд":
            p7 = Label ( text = "Слишком простой пароль", font = 'Consolas' )
            p7.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("7")# Эта строка что бы я видел сработала ли функция
            password_p = 7
        elif str(P) == "АБВГД":
            p8 = Label ( text = "Слишком простой пароль", font = 'Consolas' )
            p8.grid( row = 11, column = 0, padx = 1, pady = 1 )
            print("8")# Эта строка что бы я видел сработала ли функция
            password_p = 8
        else:
            print("9")# Эта строка что бы я видел сработала ли функция
            password_p = 1
    
    #КНОПКА
    enter = Button( text = 'Ввод', font = 'Consolas', width = 18 )
    
    name_entry = Entry( screen, font = 'Consolas' )
    password_entry = Entry( screen, font = 'Consolas', show = '*' )
    
    #Надписи
    Tname = Label( text = 'Введите имя пользователя:', font = 'Consolas' )
    Tpassword = Label( text = 'Придумайте пароль: ', font = 'Consolas' )
    
    #  расположение
    Tname.grid( row = 0, column = 0, sticky = W, padx = 1, pady = 1 )
    name_entry.grid( row = 0, column = 1, padx = 1, pady = 1 )
    Tpassword.grid( row = 1, column = 0, sticky = W, padx = 1, pady = 1 )
    password_entry.grid( row = 1, column = 1, padx = 1, pady = 1 )
    enter.grid( row = 7, column = 0, padx = 1, pady = 1 )
    enter.bind( '<Button-1>', Ввод )
    
    screen.mainloop()

    Конечно, есть много проблемных мест, но это уже самому исправлять
    Ответ написан
    1 комментарий
  • Почему выводится AttributeError?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    А где у вас entry_belki определена? Ctrl+f нажмите и поищите.
    Точно так же entry_jiri и entry_uglevodi

    Есть только jiri, belki, uglevodi
    self.belki = ttk.Entry(self)
            self.belki.place(x=150, y=100)
    
            self.jiri = ttk.Entry(self)
            self.jiri.place(x=150, y=125)
    
            self.uglevodi = ttk.Entry(self)
            self.uglevodi.place(x=150, y=150)
    Ответ написан
  • Как полученные данные из файла предоставить в виде списка?

    SoreMix
    @SoreMix
    yellow
    file.readlines()
    ?
    file.split('\n')
    Ответ написан
    Комментировать
  • Почему Tkinter работает неправильно?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    for i, button in enumerate(buttons):
      ttk.Button(root, text=button, command=lambda x = button: display.insert(0, x)).grid(row=row_position[i], column=column_position[i])
    Ответ написан
    Комментировать
  • Я отправил сообщение боту-он момещает его в text(tkinter), я отправляю второе сообщение-бот заменяет им предыдущее, и так бесконечно. Как сделать?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    То есть вы сделали в коде установку нового значения текста, и теперь недовольны этой функцией или что?
    Ответ написан
  • Почему вылезает ошибка "_tkinter.TclError: unknown option "-height""?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Почему вылезает такая ошибка

    Потому что параметра height у ttk кнопок не существует.

    Либо использовать другие кнопки, те же стандартные, либо искать как двигать их по другому, через сетку или что там
    Ответ написан
    3 комментария