python创建子窗口并在子窗口上增加按钮_pythontkinter:如何确保在单击时只创建一个子窗口,而不是每次单击按钮时创建一个新窗口?...

目前正在学习tkinter,已经走到了尽头。

每次我单击GUI中的一个按钮(在登录屏幕中输入“用户名”和“密码”之后),就会创建并显示一个新的子窗口。它应该如此。我现在要做的是确保只创建一个窗口,任何后续的单击都不会创建更多的窗口。这怎么可能?在from tkinter import *

class Main():

def __init__(self, master):

self.master = master

self.master.title("Main Window")

self.button1 = Button(self.master, text="Click Me 1", command = self.Open1)

self.button1.grid(row=0, column=0, sticky=W)

self.button2 = Button(self.master, text="Click Me 2", command = self.Open2)

self.button2.grid(row=0, column=2, sticky=W)

self.button3 = Button(self.master, text="Close", command = self.Close)

self.button3.grid(row=1, column=0, sticky=W)

def Login(self):

login_win = Toplevel(self.master)

login_window = Login(login_win)

login_window.Focus()

#main_window.Hide()

def Open1(self):

second_window = Toplevel(self.master)

window2 = Second(second_window)

def Open2(self):

third_window = Toplevel(self.master)

window3 = Third(third_window)

def Close(self):

self.master.destroy()

#def Hide(self):

#self.master.withdraw()

#def Appear(self):

#self.master.deiconify()

class Second():

def __init__(self, master):

self.master = master

self.master.title("Child 1 of Main")

self.master.geometry("300x300")

self.button4 = Button(self.master, text="Click Me 1", command = self.Open_Child)

self.button4.grid(row=0, column=0, sticky=W)

def Open_Child(self):

second_child_window = Toplevel(self.master)

window4 = Second_Child(second_child_window)

class Third():

def __init__(self, master):

self.master = master

self.master.geometry("300x300")

self.master.title("Child 2 of Main")

class Second_Child():

def __init__(self, master):

self.master = master

self.master.geometry("400x300")

self.master.title("Child of 'Child 1 of Main'")

class Login():

def __init__(self, window):

self.window = window

self.window.title("Current Library")

Label(self.window, text="Log in to use this program:").grid(row=0, column=0, sticky=W)

self.userbox=Entry(self.window, width=20, bg="light green")

self.userbox.grid(row=1, column=0, sticky=W)

self.passbox=Entry(self.window, width=20, bg="light green")

self.passbox.grid(row=2, column=0, sticky=W)

Button(self.window, text="Submit", width=5, command=self.clicked).grid(row=3, column=0, sticky=W)

def Focus(self):

self.window.attributes('-topmost', 1)

self.window.grab_set()

def clicked(self):

username = self.userbox.get()

password = self.passbox.get()

if password == "password" and username == "username":

self.correct = True

self.window.grab_release()

self.window.destroy()

else:

pass

root_window = Tk()

root_window.iconbitmap(default='transparent.ico')

root_window.geometry("200x100")

main_window = Main(root_window)

main_window.Login()

root_window.mainloop()

在单击按钮时调用的函数中,我可以添加IF语句吗?:如果窗口对象不存在,则实例化窗口对象ELSE pass。在

^{pr2}$

如果这是正确的逻辑,那么我如何检查窗口对象是否已经被创建,因为在创建窗口对象之前,上面的内容并不适用于我引用的对象?在

非常感谢。在

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【大纲】 0-1-课程内容和安排介绍 1-1-计算机的概念 1-2-程序设计语言概述 1-3-Python语言 1-4-Python开发环境配置 1-5-基本程序设计方法 1-6-理解问题的计算部分 1-7-温度转换程序实例 2-1-Python程序元素分析 2-2-程序编写模板 2-3-turtle库和蟒蛇绘制程序 2-4-蟒蛇绘制程序分析 2-5-函数库的引用 3-1-Python中类型的概念 3-2-数字类型 3-3-字符串类型 3-4-字符串的操作 3-5-元组类型 3-6-列表类型及操作 3-7-math库和random库 3-8-π的计算 4-1-1-程序基本结构 4-1-2-简单分支 4-1-3-多分支 4-1-4-异常处理设计 4-1-5-三者最大实例分析 4-2-1-基本循环结构 4-2-2-通用循环构造方法 4-2-3-死循环半路循环 4-2-4-布尔表达式 6-1-1-文件的基础 6-1-2-文件的基本处理 6-1-3-文件实例一 6-1-4-文件实例二 6-2-1-字典的基础 6-2-2-字典的操作 6-2-3-字典实例一 6-2-4-字典实例二 7-3-1-计算思维 7-3-2-自顶向下的设计 7-3-3-自底向上的执行 7-3-4-软件工程 7-3-5-敏捷开发方法 7-4-1-面向过程的程序设计 7-4-2-面向对象的程序设计 7-4-3-基本例 7-4-4-面向对象的特点 8-6-1-基本介绍 8-6-2-图形对象概念 8-6-3-交互式图形用户接口 8-6-4-图形库的应用方法 8-6-5-Turtle库介绍 8-6-6-图形用户接口实例 8-6-7-Turtle实例 8-6-8-Turtle Art 第6章-函数与递归-1-函数定义 第6章-函数与递归-2-函数的调用和返回值 第6章-函数与递归-3-改变参数值的函数 第6章-函数与递归-4-程序结构和递归 第6章-函数与递归-5-函数实例

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值