我正try 在第87行创建一个新窗口.虽然我只创建了一个窗口,但它还创建了一个窗口和一个白色窗口

import customtkinter as ctk
import tkinter as tk
import tkinter.font as font

passwordNum = 0
visible = False
textentry = None
titleentry = None
mainWindowVar = None

ctk.set_default_color_theme("green")
loginWindow = ctk.CTk()
loginWindow.geometry("500x500")
button_font = font.Font(size=50) 

# 1.Name, 2.Password, 3. Perms
loginData = {"1": ["1", ["post"]]}


def Create_Post(master, windowHeight, windowWidth):
    distanceBetweenTopAndPost = (windowHeight / 100) * 0.1
    distanceBetweenLeftAndPost = (windowWidth / 100) * 0.1
    nameLabel = ctk.CTkLabel(master=master, text="test")
    nameLabel.place(relx=distanceBetweenLeftAndPost, rely=distanceBetweenTopAndPost)
    

def Toggle_password_visibility():
    global visible
    if visible == False:
        visible = True
        uPasswordEntry.configure(show="")
        togglePasswordBtn.configure(text="?")
    else:
        visible = False
        uPasswordEntry.configure(show="*")
        togglePasswordBtn.configure(text="?")


def Button_handler():
    uName = uNameEntry.get()
    uPassword = uPasswordEntry.get()
    for name in loginData:
        if name == uName:
            if uPassword == loginData.get(uName)[passwordNum]:
                invalidLogin.place_forget()
                loginWindow.destroy()
                Create_main_window()
                return
    invalidLogin.place(relx=0.5, rely=0.35, anchor=tk.N)


def Post_Button(master, windowHeight, windowWidth):
    global textentry, titleentry
    textentrytext = textentry.get("1.0", "end-1c")
    text = titleentry.get()
    Create_Post(master, windowHeight, windowWidth)


def new_post():
    global titleentry, textentry, mainWindowVar
    post_window = ctk.CTkToplevel()
    post_window.title("New Post")
    post_window.geometry("350x350")
    post_window.resizable(0,0)

    headingLabel = ctk.CTkLabel(master=post_window, text="Headline", fg_color="transparent")
    headingLabel.place(relx=0.06, rely=0.05, anchor=tk.W)

    textLabel = ctk.CTkLabel(master=post_window, text="Text", fg_color="transparent")
    textLabel.place(relx=0.05, rely=0.23)

    global titleentry
    titleEntry = ctk.CTkEntry(master=post_window)
    titleEntry.place(relx=0.05, rely=0.15, anchor=tk.W)
    titleentry = titleEntry

    global textentry
    textEntry = ctk.CTkTextbox(master=post_window, width=250, height=200)
    textEntry.place(relx=0.4, rely=0.6, anchor=tk.CENTER)
    textentry = textEntry

    postBtn = ctk.CTkButton(master=post_window, text="Post", width=30, height=30, command=lambda: Post_Button(mainWindowVar, post_window.winfo_height(), post_window.winfo_width()))
    postBtn.place(relx=0.85, rely=0.1, anchor=tk.W)


def Create_main_window():
    mainWindow = ctk.CTkToplevel()
    mainWindow.title("Social")
    mainWindow.geometry("650x650")
    mainWindow.resizable(0,0)
    global mainWindowVar
    mainWindowVar = mainWindow


    ctk_textbox_scrollbar = ctk.CTkScrollbar(mainWindow)
    ctk_textbox_scrollbar.grid(row=0, column=1, sticky="ns")

    createButton = ctk.CTkButton(master=mainWindow, text="+ New Post", command=new_post)
    createButton.place(rely=0.05, relx=0.97, anchor=tk.E)


invalidLogin = ctk.CTkLabel(loginWindow, text="Invalid password", text_color="red", fg_color="transparent")
invalidLogin.place(relx=0.5, rely=0.38, anchor=tk.N)
invalidLogin.place_forget()

uNameEntry = ctk.CTkEntry(master=loginWindow, placeholder_text="Username")
uNameEntry.place(relx=0.5, rely=0.17, anchor=tk.N)

# The entry for the password
uPasswordEntry = ctk.CTkEntry(master=loginWindow, show="*", placeholder_text="Password")
uPasswordEntry.place(relx=0.5, rely=0.27, anchor=tk.N)

# Confirm button
confirmButton = ctk.CTkButton(master=loginWindow, text="Login", command=Button_handler)
confirmButton.place(relx=0.5, rely=0.40, anchor=tk.CENTER)

togglePasswordBtn = ctk.CTkButton(master=loginWindow, text="?", fg_color="transparent", command=Toggle_password_visibility, width=10, height=15, hover=False)
togglePasswordBtn["font"] = button_font
togglePasswordBtn.place(relx=0.65, rely=0.27)

loginWindow.mainloop()

这是我使用的代码

我试图创建一个新窗口,但他创建了两个窗口.1"正常"1和1只有一个白色,名称为"tk"我试图删除行,但没有创建空白窗口,你们中有谁以前遇到过这个问题?我也试着把它注释掉,然后运行它,但它也不起作用,我不明白:/

推荐答案

由于您希望将loginWindow用作应用程序的主窗口,但希望在显示post_window时将其隐藏,因此应按如下方式更新Button_handler:

def Button_handler():
    uName = uNameEntry.get()
    uPassword = uPasswordEntry.get()
    for name in loginData:
        if name == uName:
            if uPassword == loginData.get(uName)[passwordNum]:
                invalidLogin.place_forget()
                # use 'withdraw' to minimize the window w/o destroying it and quitting the app
                loginWindow.withdraw()
                # don't call 'Create_main_window()' here
                # return  # you also don't need this
    invalidLogin.place(relx=0.5, rely=0.35, anchor=tk.N)

那么你应该把Create_main_window的功能全部删除.

当您再次需要主窗口时,可以使用loginWindow.deiconify()恢复主窗口.

Python相关问答推荐

为什么我的(工作)代码(生成交互式情节)在将其放入函数中时不再工作?

Django注释:将时差转换为小数或小数

使用Python和PRNG(不是梅森龙卷风)有效地生成伪随机浮点数在[0,1)中均匀?

如何根据情况丢弃大Pandas 的前n行,使大Pandas 的其余部分完好无损

将HLS纳入媒体包

我从带有langchain的mongoDB中的vector serch获得一个空数组

使用FASTCGI在IIS上运行Django频道

根据不同列的值在收件箱中移动数据

类型错误:输入类型不支持ufuncisnan-在执行Mann-Whitney U测试时[SOLVED]

将输入管道传输到正在运行的Python脚本中

Pandas - groupby字符串字段并按时间范围 Select

图像 pyramid .难以创建所需的合成图像

如何从在虚拟Python环境中运行的脚本中运行需要宿主Python环境的Shell脚本?

为什么以这种方式调用pd.ExcelWriter会创建无效的文件格式或扩展名?

实现自定义QWidgets作为QTimeEdit的弹出窗口

Pandas Loc Select 到NaN和值列表

在单次扫描中创建列表

手动设置seborn/matplotlib散点图连续变量图例中显示的值

重置PD帧中的值

当HTTP 201响应包含 Big Data 的POST请求时,应该是什么?