@idkwhichnickname

Диалоговое окно?

Учу Tkinter по гайдам и не понимаю, почему не открывается следующее окно при нажатии "Войти"
Покажите мою ошибку и если не сложно разжевать что я не так сделал, заранее спасибо :)

from tkinter import *
from tkinter import messagebox


# Label - выводит текст в наше графическое окно
# Entry - поле ввода для текста(как input)
# Radiobutton - переключатель
# Checkbutton - флажок



# Даём название нашей переменной для окна
root = Tk()

# Не сможем менять размеры нашего окна
root.resizable(width=False, height=False)
# Размер окна
root.geometry('300x220')
# Название нашего окна
root.title('Authorization')
# Задаём прозрачность нашему окну
root.wm_attributes('-alpha', 0.9)
# Красим наше окно в любой цвет
root['bg'] = '#ccc'
# Меняем иконку нашего окна, в скобочках путь
# root.iconbitmap('')


# Функция
def check():
	L = login.get()
	P = password.get()

	if L and P:
		messagebox.showinfo('Succes', 'Вы успешно вошли в систему!')


# Label, возможность вписать шрифт в строку
text_login = Label( text = 'Login', font = 'Comfortaa 20',
	fg = '#3d3d42',
	bg = '#ccc', )
# Entry, имеет функцию relief(обводка нашего Entry), justify(выравнение нашего текста), show(маска наших символов)
login = Entry( root, font = 'Consolas 15',
	fg = '#eff5c9',
	bg = '#48494f',
	relief = 'solid',
	justify = 'center' )

text_password = Label( text = 'Password', font = 'Comfrotaa 20',
	fg = '#3d3d42',
	bg = '#ccc' )
password = Entry( root, font = 'Consolas 15',
	fg ='#eff5c9',
	bg = '#48494f',
	relief = 'solid',
	justify = 'center',
	show = '*' )

# Checkbuttonm, activebackground(отвечает за цвет флажка при нажатии), activeforeground
check_status = Checkbutton( text = 'Оставаться в системе!', font = 'Comfortaa 13',
	fg = '#3d3d42',
	bg = '#ccc', 
	activebackground = '#ccc',
	activeforeground = '#3d3d42' )


# Button, width = '', height = ''
enter = Button( text = 'Войти', font = 'Consolas 13',
	bg = '#48494f',
	fg = '#eff5c9',
	relief = 'solid',
	activebackground = '#eff5c9',
	activeforeground = '#6e6f73',
	width = '22' )

# Packer
text_login.pack()
login.pack()

text_password.pack()
password.pack()

check_status.pack()

enter.pack()


# Запуск нашего окна
root.mainloop()
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
GennadyS
@GennadyS
Программист, философ
У Вас функция check никак не связана с кнопкой, нужно назначить ее обработчиком:
enter = Button(..., command=check)
И еще, попробуйте завернуть все это в ООП, чтобы окно, все элементы управления и обработчики были связаны классом. Сильно поможет в расширении проекта.

ЗЫ как вариант (на данном этапе не будет работать для мультиоконного приложения)

from tkinter import *
from tkinter import messagebox


# Label - выводит текст в наше графическое окно
# Entry - поле ввода для текста(как input)
# Radiobutton - переключатель
# Checkbutton - флажок


class LoginWindow(Tk):
    def __init__(self):
        super(LoginWindow, self).__init__()
        # Не сможем менять размеры нашего окна
        self.resizable(width=False, height=False)
        # Размер окна
        self.geometry('300x220')
        # Название нашего окна
        self.title('Authorization')
        # Задаём прозрачность нашему окну
        self.wm_attributes('-alpha', 0.9)
        # Красим наше окно в любой цвет
        self['bg'] = '#ccc'
        # Меняем иконку нашего окна, в скобочках путь
        # root.iconbitmap('')

        # Label, возможность вписать шрифт в строку
        self.text_login = Label(self, text='Login', font='Comfortaa 20', fg='#3d3d42', bg='#ccc',)

        # Entry, имеет функцию relief(обводка нашего Entry), justify(выравнение нашего текста), show(маска наших символов)
        self.login = Entry(self, font='Consolas 15', fg='#eff5c9', bg='#48494f', relief='solid', justify='center')

        self.text_password = Label(self, text='Password', font='Comfrotaa 20', fg='#3d3d42', bg='#ccc')
        self.password = Entry(self, font='Consolas 15', fg='#eff5c9', bg='#48494f', relief='solid', justify='center', show='*')

        # Checkbuttonm, activebackground(отвечает за цвет флажка при нажатии), activeforeground
        self.check_status = Checkbutton(self, text='Оставаться в системе!', font='Comfortaa 13', fg='#3d3d42', bg='#ccc', activebackground='#ccc', activeforeground='#3d3d42')

        # Button, width = '', height = ''
        self.enter = Button(self, text='Войти', font='Consolas 13', bg='#48494f', fg='#eff5c9', relief='solid', activebackground='#eff5c9', activeforeground='#6e6f73', width='22', command=self.check)

        # Packer
        self.text_login.pack()
        self.login.pack()
        self.text_password.pack()
        self.password.pack()
        self.check_status.pack()
        self.enter.pack()

    # Метод
    def check(self):
        L = login.get()
        P = password.get()

        if L and P:
            messagebox.showinfo('Succes', 'Вы успешно вошли в систему!')


def main():
    # Запуск нашего окна
    login_window = LoginWindow()
    login_window.mainloop()

if __name__ == "__main__":
    main()

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 150 000 до 200 000 ₽
от 50 000 до 150 000 ₽
OnederX Москва
от 100 000 до 120 000 ₽
19 сент. 2020, в 12:04
1000 руб./в час
19 сент. 2020, в 11:26
17500 руб./за проект
19 сент. 2020, в 10:21
10000 руб./за проект