User interface Tkinter程序打开2个windows问题

User interface Tkinter程序打开2个windows问题,user-interface,tkinter,python-3.7,User Interface,Tkinter,Python 3.7,我正在尝试在tkinter中创建一个银行程序,您可以在其中登录和注册,但当我尝试运行它时,出现了一个问题。当我运行第一个文件时,它会打开窗口2次,这是我不想要的 这是我的主文件: from Login import * from time import * from tkinter import * #Frame Setup######## root = Tk() root.title("Main_File") root.configure(bg="SeaGreen") var = Frame

我正在尝试在tkinter中创建一个银行程序,您可以在其中登录和注册,但当我尝试运行它时,出现了一个问题。当我运行第一个文件时,它会打开窗口2次,这是我不想要的

这是我的主文件:

from Login import *
from time import *
from tkinter import *

#Frame Setup########
root = Tk()
root.title("Main_File")
root.configure(bg="SeaGreen")
var = Frame(root)
var.configure(bg=var.master['bg'])
var.grid()

Login(var)

def LogClicked():
    print("Log")

def RegClicked():
    print("Reg")
这是我的第二个文件:

from tkinter import *

def Login(Log):
    import Main_File
    #First Name#########
    L1 = Label(Log, text="First Name:")
    L1.configure(font=("Courier", 35),bg=L1.master['bg'], fg="Gold")
    L1.grid(row=0, column=0, padx=(50, 0), pady=(100, 0))
    FirstN = Entry(Log)
    FirstN.configure(width=50)
    FirstN.grid(row=0, column=1, pady=(100, 0))

    #Last Name##########
    L2 = Label(Log, text="Last Name:")
    L2.configure(font=("Courier", 35),bg=L2.master['bg'], fg="Gold")
    L2.grid(row=1, column=0, padx=(50, 0), sticky=W)
    LastN = Entry(Log)
    LastN.configure(width=50)
    LastN.grid(row=1, column=1)

    #Login Button#######
    LogB = Button(Log, text="Login", command = lambda : Main_File.LogClicked())
    LogB.configure(font=("Courier", 15),bg=LogB.master['bg'],     activebackground=LogB.master['bg'], width=25)
    LogB.grid(row=3, column=1)

    #Register Button####
    RegB = Button(Log, text="Register", command = lambda : Main_File.RegClicked())
    RegB.configure(font=("Courier", 15),bg=RegB.master['bg'], activebackground=RegB.master['bg'], width=25)
    RegB.grid(row=4, column=1)

现在不管怎样,我总是先运行主文件。任何帮助都将不胜感激。谢谢。

问题是从Login.py导入主文件。您正在导入整个模块,其中包括Tk()的创建,因此添加了窗口。另外,最好使用
import tkinter as tk
,而不是从tkinter import*全局导入

如果必须保留主_文件并作为单独文件登录,则可以尝试以下操作:

from Login import Login
from time import *
from tkinter import *

#Frame Setup########
root = Tk()
root.title("Main_File")
root.configure(bg="SeaGreen")
var = Frame(root)
var.configure(bg=var.master['bg'])
var.grid()

Login(var)

root.mainloop()
第二个文件:

from tkinter import *

def Login(Log):
    #First Name#########
    L1 = Label(Log, text="First Name:")
    L1.configure(font=("Courier", 35),bg=L1.master['bg'], fg="Gold")
    L1.grid(row=0, column=0, padx=(50, 0), pady=(100, 0))
    FirstN = Entry(Log)
    FirstN.configure(width=50)
    FirstN.grid(row=0, column=1, pady=(100, 0))

    #Last Name##########
    L2 = Label(Log, text="Last Name:")
    L2.configure(font=("Courier", 35),bg=L2.master['bg'], fg="Gold")
    L2.grid(row=1, column=0, padx=(50, 0), sticky=W)
    LastN = Entry(Log)
    LastN.configure(width=50)
    LastN.grid(row=1, column=1)

    def LogClicked():
        print("Log")

    def RegClicked():
        print("Reg")

    #Login Button#######
    LogB = Button(Log, text="Login", command = lambda : LogClicked())
    LogB.configure(font=("Courier", 15),bg=LogB.master['bg'],     activebackground=LogB.master['bg'], width=25)
    LogB.grid(row=3, column=1)

    #Register Button####
    RegB = Button(Log, text="Register", command = lambda : RegClicked())
    RegB.configure(font=("Courier", 15),bg=RegB.master['bg'], activebackground=RegB.master['bg'], width=25)
    RegB.grid(row=4, column=1)

唯一的问题是我希望在主文件中使用regclicked和logclicked,因为我将创建更多的文件,如login,我希望主文件是操作的“大脑”,login.py和所有其他文件是操作的外观如果您希望主文件是大脑,那么为什么其他文件需要从主文件导入呢?我之所以让导入文件必须导入主文件,是因为我需要它,所以当按下按钮时,它会激活主文件中的功能。我希望它从主文件激活一个函数的原因是因为稍后我要将打印(“regclicked”)更改为寄存器帧激活的方式