Я пытаюсь создать простой скрипт, но делаю логин для него с помощью tkinter, всякий раз, когда имя пользователя и пароль вводятся правильно, он должен закрыть окно tkinter и перейти в оболочку, код командной строки и код tkinter находятся в В том же файле .py проблема в том, что всякий раз, когда я пытаюсь использовать классы, python переходит прямо в код CLI, полностью игнорируя tkinter.

from tkinter import *
class CLI():
    def something():
        eg = input("name: ")
        print("your name is",eg)
    something()
def login():
    if (txtUsername.get() == "admin" and txtPassword.get() == "secret"):
        messagebox.showinfo("Access granted", "Valid")
        c = CLI()
        print(c)
        top.destroy()
    else:
        messagebox.showinfo("Access denied", "Invalid")


top = Tk()
top.wm_title("example")
top.minsize(width=500, height=400)
top.resizable(width=False, height=False)
var = StringVar()
lblUsername = Label(top, text="Username:")
lblUsername.pack()
txtUsername = Entry(top)
txtUsername.pack()
lblPassword = Label(top, text="Password:")
lblPassword.pack()
txtPassword = Entry(top)
txtPassword.pack()
btnCHKLogin = Button(top, text="Check Login..", command=login)
btnCHKLogin.pack()
0
NourNaser 6 Янв 2017 в 20:40

1 ответ

Лучший ответ

Проблема в том, что вы вызываете something() сразу после его определения, а не после выполнения кода tkinter:

def something():
    eg = input("name: ")
    print("your name is",eg)
something() #you call something() here so it executes first

Удаление этой строки позволит запускать код tkinter.

0
Trelzevir 6 Янв 2017 в 20:47
Но как я смогу вызвать функцию, если я ее удалю?
 – 
NourNaser
6 Янв 2017 в 20:55
Здесь вам нужно удалить только вызов something (), а не саму функцию
 – 
Trelzevir
6 Янв 2017 в 20:56
Да, но если я удалю эту строку, я не смогу использовать эту функцию, я смогу получить только экран входа в систему ..
 – 
NourNaser
6 Янв 2017 в 20:58
Поскольку он является частью class CLI, вы можете вызвать его позже с помощью CLI.something()
 – 
Trelzevir
6 Янв 2017 в 20:59
Приведенный выше код является только примером, мне понадобится весь класс, который может содержать более одной функции, и, пожалуйста, простите меня, поскольку я новичок в python.
 – 
NourNaser
6 Янв 2017 в 21:01