Tkinter открывает второй графический интерфейс первым - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь создать экран входа в систему для практики, и у меня проблемы с ним. Общая идея заключается в том, что нажатие кнопки «Вход» закрывает текущее окно и открывает другое в отдельном файле. Однако, когда я запускаю основной файл, он открывает окно GUI, созданное во втором файле. Я не уверен, что будет причиной этого сделать.

import tkinter as tk
import loginEntry

HEIGHT = 200
WIDTH = 500


def login_function():
    root.destroy()
    loginEntry.NewScreen()


def register_function():
    print("Register!")


root = tk.Tk()

root.title("Login Screen")
root.resizable(False, False)

canvas = tk.Canvas(root, height = HEIGHT, width = WIDTH)
canvas.pack()

frame = tk.Frame(root, bg='grey')
frame.place(relx=0.1, rely=0.25, relwidth=0.8, relheight=0.5)

login = tk.Button(frame, text="Login", command=login_function)
login.place(relx=0.05, rely=0.25, relwidth=0.425, relheight=0.5,)

register = tk.Button(frame, text="Register", command=register_function)
register.place(relx=0.525, rely=0.25, relwidth=0.425, relheight=0.5,)

introduction = tk.Label(root, text="Hello and welcome to DogNet, please login below.", font='bold 12')
introduction.place(relx=0.5, anchor='center', rely=0.1)

root.mainloop()

, а затем второй файл

import tkinter as tk

def NewScreen():
    root = tk.Tk()

    canvas = tk.Canvas(root, bg='black')
    canvas.pack()

    root.mainloop()

NewScreen()

1 Ответ

1 голос
/ 03 октября 2019

Это потому, что во втором файле вы вызываете определение при его импорте.

import tkinter as tk

def NewScreen():
    root = tk.Tk()

    canvas = tk.Canvas(root, bg='black')
    canvas.pack()

    root.mainloop()

NewScreen() #< here you call the definition

Это означает, что последовательность событий, происходящих в вашей программе, следующая.

  1. Первый файл запускается
  2. Второй файл импортируется
  3. Определение называется "NewScreen"
  4. tkinter mainloop запускается, что ставит вашу программу в цикл и останавливаетпрограмма от перехода на любые новые строки до тех пор, пока цикл не будет закрыт
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...