Ответы пользователя по тегу Tkinter
  • Как вывести файл картинки(картинку) на экран из проводника компьютера?

    shabelski89
    @shabelski89
    engineer
    Вам нужен - Open File Dialog
    Вот тут пример для текстового файла, но раз вы знаете как уже отображать картинку, то проблем нет.
    Ответ написан
    Комментировать
  • Ошибка в tkinker, при нажатии на кнопку, как исправить?

    shabelski89
    @shabelski89
    engineer
    внутри функции save вы её вызываете ещё раз -зачем? и откуда берется link1 тоже не ясно
    def save(link):
        filename = link.split('/')[-1]
        print (filename)
        r = requests.get(link)
        open(filename, 'wb').write(r.content)
        #save(link1) # убираем это
        save_1 = tk.Label(win, text='Desktop cкачан в текущую папку', bg='#CCC', font=('Arial',10))
        save_1.pack()
        save_1.place(x=15, y=200)

    что там про чек-бокс не понятно, нужен полный код программы
    Ответ написан
    6 комментариев
  • Как получить имя ячейки ttk.treeview как переменную при выборе её кликом?

    shabelski89
    @shabelski89
    engineer
    Нужно установить фокус и потом получать данные из выделенной строки TreeView, примерно так
    row_id = table.focus()
    print(row_id)
    if row_id:
        order_num = table.item(row_id)['values'][0]
        print(order_num)
    Ответ написан
    4 комментария
  • Как сделать так, чтобы кнопка была неактивной, пока в поле ввода не будет достаточного количества символов?

    shabelski89
    @shabelski89
    engineer
    import tkinter as tk
    
    root = tk.Tk()
    
    def myfunction(*args):
        l = 6
        check_entry = stringvar1.get()
        if len(check_entry) >= l:
            button.config(state='normal')
        else:
            button.config(state='disabled')
    
    stringvar1 = tk.StringVar(root)
    stringvar1.trace("w", myfunction)
    
    entry1 = tk.Entry(root, width=15, textvariable=stringvar1)
    entry1.grid(row=1,column=1)
    
    button = tk.Button(root,text="submit", state='disabled')
    button.grid(row=1, column=4)
    
    root.mainloop()
    Ответ написан
    1 комментарий
  • Как вывести номер строки БД SQLite3 как переменную?

    shabelski89
    @shabelski89
    engineer
    Вот тут писал для кого-то пример на ткинтер работы с sqlite.
    Там все нужные вам CRUD.
    То есть методы внесения данных и получения ) ну и отображения
    Ответ написан
    Комментировать
  • Как получить переменную, которая находится внутри класса?

    shabelski89
    @shabelski89
    engineer
    перепишите как в примере, метод grid отдельно
    self.label_driver = Label(self, text="Драйвер:")
            self.label_driver.grid(row=0, sticky=E)
            self.entry_driver = Entry(self)
            self.entry_driver.grid(row=0, column=1)

    для всех блоков, и все заработает
    Ответ написан
    Комментировать
  • Как значение переменной перенести из одной функции в другую?

    shabelski89
    @shabelski89
    engineer
    в функции проверки добавить return, в фунцкию ввода присвоение a = func().
    и ужас сколько дублирования кода! вперед за учебники!
    from tkinter import *
    
    screen = Tk()
    
    screen.resizable(width=False, height=False)
    screen.geometry('410x230')
    screen.title('Регистрация')
    # screen.iconbitmap("D:/Python/регистр/web/favicon.ico")
    
    
    def Enter(event):
        TWp = TWpassword_chek()
        login_p = login_check()
        password_p = password_check()
        print("логин + пароль  " + str(login_p) + str(password_p))
        if login_p == True:
            print("логин есть")
            if password_p == True:
                print("пароль")
                if TWp == True:
                    vse = Label(text=' Вы зарегистрированы ', font='Consolas')
                    vse.grid(row=16, column=0, padx=1, pady=1)
                    print("зарегистрированы")
    
    
    # проверка имени
    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
    
    
    # password
    def password_check():
        P = password_entry.get()
        if len(str(P)) < 5 or str(P) in ("abcde", "ABCDE", "12345", "123456789", "987654321", "абвгд", "АБВГД"):
            p1 = Label(text=" Слишком короткий пароль ", font='Consolas')
            p1.grid(row=14, column=0, padx=1, pady=1)
            print("1")  # Эта строка что бы я видел сработала ли функция
            password_p = False
        else:
            p0 = Label(text='' * 30, font='Consolas')
            p0.grid(row=14, column=0, padx=1, pady=1)
            print("3")  # Эта строка что бы я видел сработала ли функция
            password_p = True
        return password_p
    
    
    def TWpassword_chek():
        P = password_entry.get()
        TWP = TWpassword_entry.get()
        if TWP == P:
            print("пароли совпали " + TWP)
            TWp = True
            TW0 = Label(text='                             ', font='Consolas')
            TW0.grid(row=15, column=0, padx=1, pady=1)
    
        else:
            print("пароли не совпали")
            TWp = False
            TWp_e = Label(text=' Пароли не совподают ', font='Consolas')
            TWp_e.grid(row=15, column=0, padx=1, pady=1)
        return TWP
    
    
    # КНОПКА
    enter = Button(text='Ввод', font='Consolas', width=18)
    # Ввод
    name_entry = Entry(screen, font='Consolas')
    password_entry = Entry(screen, font='Consolas', show='*')
    TWpassword_entry = Entry(screen, font='Consolas', show='*')
    # Надписи
    Tname = Label(text='Введите имя пользователя:', font='Consolas')
    Tpassword = Label(text='Придумайте пароль: ', font='Consolas')
    TWpassword = Label(text='Повторите пароль: ', font='Consolas')
    
    #  расположение
    Tname.grid(row=3, column=0, sticky=W, padx=1, pady=1)
    name_entry.grid(row=3, column=1, padx=1, pady=1)
    Tpassword.grid(row=4, column=0, sticky=W, padx=1, pady=1)
    password_entry.grid(row=4, column=1, padx=1, pady=1)
    TWpassword.grid(row=5, column=0, sticky=W, padx=1, pady=1)
    TWpassword_entry.grid(row=5, column=1, padx=1, pady=1)
    enter.grid(row=10, column=0, padx=1, pady=1)
    enter.bind('<Button-1>', Enter)
    
    screen.mainloop()
    Ответ написан
    Комментировать
  • Использование sqlite3 И tkinter и создание базы данных?

    shabelski89
    @shabelski89
    engineer
    Задачка показалась интересной, код доступен на гитхаб.
    Выполняются все основные требования, много дубля кода удалено, но всё равно далёк от идеала)
    Ключевой момент, что для решения задачи достаточно было бы использование listbox, потому что treeview подразумевает вложенность. Например курсант и внутри n-строк по предметам.
    Приглашаю допилить .
    5fd7c43a3eafc813983720.png
    Ответ написан
    Комментировать
  • Считывание из окон считывания не получатся что делать?

    shabelski89
    @shabelski89
    engineer
    Вы нагородили сложный огород, советую пройти минимальный бесплатный курс.

    А вот рабочий код, примерно того что Вы хотели.
    В качестве домашнего задания придумайте логику обработки возраста.

    from tkinter import *
    
    
    def check_bmi(h, w, a):
        bmi = round(w / (h / 100) / (h / 100), 2)
        if bmi < 16.5:
            result = 'очень плохо'
        elif 16.5 <= bmi < 18.5:
            result = 'недостаточная масса тела'
        elif 18.5 <= bmi < 25:
            result = 'нормальный вес'
        elif 25 <= bmi < 30:
            result = 'избыточная масса тела'
        else:
            result = 'Ожирение!'
        return result
    
    
    def bmi_index():
        if not entry1.get() or not entry2.get() or not entry3.get():
            label4.configure(text='заполните все поля')
            label4.pack()
        else:
            height = float(entry1.get())
            weight = float(entry2.get())
            age = int(entry3.get())
            bmi = check_bmi(height, weight, age)
            entry1.delete(0, END)
            entry2.delete(0, END)
            entry3.delete(0, END)
    
            label4.configure(text=bmi)
            label4.pack()
    
    
    if __name__ == '__main__':
        root = Tk()
        f1 = Frame()
        f1.pack(side=LEFT, padx=10)
        entry1 = Entry(f1)
        label1 = Label(f1, text="рост в см", justify=LEFT)
        entry2 = Entry(f1)
        label2 = Label(f1, text="вес в кг", justify=LEFT)
        entry3 = Entry(f1)
        label3 = Label(f1, text="возраст полных лет", justify=LEFT)
    
        label1.pack(fill=X)
        entry1.pack(fill=X)
        label2.pack(fill=X)
        entry2.pack(fill=X)
        label3.pack(fill=X)
        entry3.pack(fill=X)
    
        f2 = Frame()
        f2.pack(side=LEFT, padx=10)
        badd = Button(f2, text="подсчитать", background="#555", foreground="#ccc",
                      padx="20", pady="8", font="16", command=bmi_index)
        badd.pack(fill=X)
        label4 = Label(f2, text="", justify=LEFT)
        label4.pack(fill=X)
        root.mainloop()
    Ответ написан
    Комментировать