【问题标题】:Tkinter programs opening 2 windows problemTkinter 程序打开 2 个窗口的问题
【发布时间】:2018-10-10 01:37:19
【问题描述】:

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

这是我的主文件:

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)

现在无论如何,我总是要先运行主文件。任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: user-interface tkinter python-3.7


    【解决方案1】:

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

    如果您必须将 Main_file 和 Login 保留为单独的文件,您可以尝试以下操作:

    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.py 和所有其他的作为操作的样子
    • 如果你想让主文件成为大脑,那为什么其他文件需要从主文件中导入呢?
    • 我让导入文件必须导入主文件的原因是因为我想要它,所以当按下按钮时,它会激活主文件中的功能。我希望它从主文件中激活一个功能的原因是因为稍后我要将 print(“regclicked”) 更改为注册框架激活的方式
    猜你喜欢
    • 2013-09-18
    • 2018-05-11
    • 2018-11-17
    • 2019-08-07
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多