Tkinter - 打开一个窗口并关闭另一个窗口

2024-05-07

我想要一个登录屏幕,当登录成功时,屏幕将关闭并创建一个新屏幕。问题是,当我执行以下代码时,两个屏幕同时打开。如果您有任何改进代码的建议,请提出! :)

from Tkinter import *
import mysql.connector
import tkMessageBox

class Tela_login(Frame):
    root = Tk()
    root.geometry("1024x768")
    root.resizable(width=FALSE, height=FALSE)
    background_image = PhotoImage(file="fundo.gif")
    def __init__(self,master):
        Frame.__init__(self,master)
        self.grid()
        fundo = Label(image=self.background_image)
        fundo.place(x=0,y=0,relwidth=1,relheight=1)
        self.create_screen()

    def create_screen(self):
        self.label1 = Label(text="Login",font = ("Arial",60))
        self.label2 = Label(text="Senha",font = ("Arial",60))
        self.login = Entry(font = ("Arial",60),width = 10)
        self.senha = Entry(show="*",font = ("Arial",60), width= 10)
        self.entrar = Button(text="Entrar",command=lambda : self.efetua_login(),font = ("Arial",60),width=10)

        self.label1.grid(padx=258,pady=(70,0))
        self.login.grid(padx=258)
        self.label2.grid(padx=258,pady=(50,0))
        self.senha.grid(padx=258)
        self.entrar.grid(padx=258,pady=(50,0))

    def efetua_login(self):
        login = self.login.get()
        senha = self.senha.get()

        cnx = mysql.connector.connect(user='root', password='123qwe', host='192.168.56.1', database='teste')
        cursor = cnx
        cursor = cnx.cursor()

        query = ("SELECT nome, senha FROM funcionario WHERE nome = %s AND senha = %s")
        cursor.execute(query, (login,senha))
        row = cursor.fetchone()

        if row is None:

            tkMessageBox.showinfo("Erro","Usuario ou Senha Incorretos")

        else:
            app2 = Tela_principal()
            self.root.destroy()
            Tela_principal.root.mainloop()


class Tela_principal(Frame):
    root = Tk()
    root.geometry = ("1024x768")
    root.resizable(width=FALSE, height=FALSE)

    def inicia(self, master):
        background_image = PhotoImage(file="fundo.gif")
        app2 = Tela_principal(self.root)
        Frame.__init__(self, master)
        self.grid()
        self.create_widgets()

app = Tela_login(Tela_login.root)
Tela_login.root.mainloop()

你可能不想有两个Tk()实例正在运行。对于登录屏幕,您可以选择两条路线。您可以撤回根窗口并将登录屏幕设为Toplevel在顶层的初始化窗口上撤回根窗口,一旦登录成功,就会销毁顶层并升起根窗口。或者,更简单的是,您可以将登录屏幕放在单独的框架中,使用隐藏主框架pack_forget or grid_forget根据您的布局,然后登录/销毁或隐藏框架并调用pack or grid再次显示主应用程序框架。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tkinter - 打开一个窗口并关闭另一个窗口 的相关文章

随机推荐

  • 不活动后自动“停止”Sagemaker 笔记本实例?

    我有一个 Sagemaker Jupyter 笔记本实例 我一直错误地将它留在网上过夜 不必要地花费了金钱 当没有活动 例如 1 小时 时 是否有任何方法可以自动停止 Sagemaker 笔记本实例 或者我必须制作一个自定义脚本 您可以使用
  • 根据 HTTP PATCH RFC,文档的部分表示是否是有效的“更改集”?

    这是什么RFC 5789 https www rfc editor org rfc rfc5789 says PATCH 方法请求将请求实体中描述的一组更改应用于由 Request URI 标识的资源 这组更改以称为 补丁文档 的格式表示
  • 如何从命令行提供非 slurpy 数组或命名数组?

    首先 raku perl6 非常棒 克罗也是如此 只花了一个周末就坠入爱河 然而现在我偶然发现了一些非常简单的事情 如果我在多重调度 MAIN 中使用 slurpy 参数 则会被识别并完美运行 multi MAIN config add h
  • 如何随时暂停 pthread?

    最近我开始将 ucos ii 移植到 Ubuntu PC 上 我们知道 在pthread的回调函数中的 while 循环中简单地添加一个标志来执行暂停和恢复是不可能模拟ucos ii中的 进程 的 如下解决方案 因为ucos ii中的 进程
  • Python 3.7 Windows 不支持 dbm.gnu 吗?

    做的时候 import dbm gnu 在适用于 Windows 的标准 Python 3 7 6 64 上 我得到 文件 C Python37 lib dbm gnu py 第 3 行 位于从 gdbm 导入 ModuleNotFound
  • XSL。评估表达

    对不起我的英语不好 XSL 1 0 如何从元素或属性值计算表达式 例如 XML
  • 在 Protractor 测试中同步处理

    我正在尝试在量角器中编写一个我认为相当简单的测试 但似乎当您尝试同步执行任何操作时 量角器就会让您的生活变得困难 通常 处理定位器函数 返回 Promise 不是问题 因为任何 Expect 语句都会在测试断言之前自动解析传递给它的任何 P
  • 在 OS X 10.7.4 上安装 RSRuby 时找不到库

    我正在尝试在我的 Mac 上安装 RSRuby 调用后 sudo gem install rsruby 我收到此错误 ERROR Cannot find the R library aborting extconf rb failed Co
  • 插入标准模式文档中的动态 iframe 默认为怪异模式

    我有一份当前正在返回的父文档CSS1Compat from document compatMode 当我使用 jQuery 添加一个空白 iframe 时 如下所示 body append 并检查新 iframe 的 compatMode
  • 从java程序调用SVN命令

    我想从 java 程序调用 SVN 命令 update commit 有什么帮助吗 SVN 乌龟SVN 环境 java程序将在jBoss服务器内运行 从应用程序服务器内使用 GUI SVN 客户端是一个非常非常糟糕的主意 而Tortoise
  • 服务器端生成的 Excel 中出现 System.Runtime.InteropServices.COMException 错误

    我们有一个 Web 应用程序 可以生成 Excel 电子表格并在服务器端运行宏 然后它通过电子邮件将它们发送给不同的人 它是传统报告风格的一部分 我们正在对其进行转换 但仍然支持我们作为 IIS 中的网站提供的新应用程序 我知道进行 Off
  • 发布后忽略基本标签

    在 Chrome 上我收到错误Refused to execute a JavaScript script Source code of script found within request 在发布包含域名的数据后 另请注意任一页面上都缺
  • Openshift 上的自定义 Node.js 版本

    我在运行自定义节点版本时遇到问题node0 10您可以在开放班次中找到墨盒here https github com DavidReinberger openshift meteor leaderboard customNode 我可以很好
  • 视频回退到 Flash 在 Firefox 中不起作用

    我一直在审查有关开发人员向其 HTML5 网站添加 Flash 后备的不同方式的材料 我有这个带有虚拟视频的测试代码
  • 故事板中的 Xcode 6 UIVisualEffectView

    我正在 Xcode 6 中的对象库中查找 UIVisualEffectView 以在 Storyboard 中添加模糊效果 我知道如何以编程方式执行此操作 但我找不到在故事板中执行此操作的方法 这在当前的测试版中是否不可用 或者有没有一种不
  • Python 字符串到 SQL IN 参数的列表

    我在 python 中有这个查询 ssim group S1200 S1300 query select WIPMessageCnt from waferdata where recipename in s and equipment an
  • Django 全文搜索优化 - Postgres

    我正在尝试利用 Django v2 1 和 Postgres 9 5 创建一个地址自动完成功能的全文搜索 但性能目前不适合自动完成 我不明白逻辑我得到的绩效结果背后 就信息而言 该表相当大 有 1400 万行 我的型号 from djang
  • 将outer()应用于两个列表

    我有一个清单 说exm list elm1 c a b elm2 c b c d elm3 c b c d e 我想对以下两个元素的每个组合应用一个函数exm e g length intersect exm elm1 exm elm2 结
  • Android 开发应用程序密钥和应用程序秘密

    我正在尝试使用带氦气选项的城市飞艇为 Android 应用程序设置推送通知 但是 我需要为我的应用程序找到这些信息 但我不知道从哪里可以找到 任何意见或建议将不胜感激 谢谢你 For setting up Helium make sure
  • Tkinter - 打开一个窗口并关闭另一个窗口

    我想要一个登录屏幕 当登录成功时 屏幕将关闭并创建一个新屏幕 问题是 当我执行以下代码时 两个屏幕同时打开 如果您有任何改进代码的建议 请提出 from Tkinter import import mysql connector impor