【问题标题】:Change Window on Tkinter在 Tkinter 上更改窗口
【发布时间】:2015-06-24 15:26:11
【问题描述】:

如何在 Tkinter 上更改窗口?我想把Login的窗口改成ListaBase的窗口,但是不知道怎么做。

# -*- coding: latin-1 -*-
from Tkinter import *

import tkMessageBox

import sys
sys.path.insert(0,'C:\\Users\\felipe.cunha\\Documents\\project')

from conexao.conexao import Conexao


class Login(Frame):
        def __init__(self):
                Frame.__init__(self)
                #self.master = master
                self.master.title("teste")

                self.host = "localhost"
                label_menu = Label(self.master,text = 'Login')
                label_menu.pack()

                self.entrada_menu_login = Entry(self.master)# user
                self.entrada_menu_senha = Entry(self.master, show = "*")#passwd 
                self.entrada_menu_login.focus()               
                self.entrada_menu_login.pack()
                self.entrada_menu_senha.pack()

                btn_login = Button(self.master,text="Logar",command = self.btnConnection)
                btn_login.pack()


        def show_entry_fields(self):
                print(type(self.entrada_menu_login.get()), type(self.entrada_menu_senha.get()))

        def btnConnection(self):
                conn = Conexao(self.host,self.entrada_menu_login.get(),self.entrada_menu_senha.get())#,"dsti")
                self.dbCursor = conn.getConnection()


class ListaBases(Frame):
        def __init__(self,master,cursor):
                self.master = master
                #self.master.geometry("400x400")
                self.master.title("Data Bases")

                menubar = MenuBar(self.master)

                label_database = Label(self.master,text = "Lista de Banco de Dados").grid(row=1,column=0)
                #ListBox
                listBox = Listbox(self.master)
                listBox.grid(row=2,column=0)
                cursor.execute("show databases")


                for base in cursor.fetchall():
                        print base
                        listBox.insert(END,base)
                listBox.bind('<<ListboxSelect>>',self.selectBase)

                cursor.close()

        def selectBase(self,e):
                w = e.widget
                index = int(w.curselection()[0])
                self.value = w.get(index)
                print self.value[0]
                ListaTables(self.master,self.value[0])

class MenuBar():
        def __init__(self,master):
                self.master = master
                self.master.title("Menu Principal")
                menu_bar = Menu(self.master)
                self.master.config(menu = menu_bar)

                file_menu = Menu(menu_bar)
                file_menu.add_command(label= 'Open')
                menu_bar.add_cascade(label="File",menu=file_menu)
                menu_bar.add_cascade(label="Shell")


class ListaTables(Frame):
        def __init__(self,master,base):
                self.master = master
                self.master.title("Tables")
                cursor = Conexao("localhost","root","d04m10").getConnection()       

                cursor.execute("use %s"%(base))

                label_database = Label(self.master,text = "Lista de Tabelas").grid(row=1,column=0)
                #ListBox
                listBox = Listbox(self.master)
                listBox.grid(row=2,column=0)
                cursor.execute("show tables")


                for table in cursor.fetchall():
                        print table
                        listBox.insert(END,table[0])

【问题讨论】:

  • 你说“把它改成ListaBase的窗口”是什么意思?另外,您能否将其简化为 MCVE?
  • 您好,我正在尝试更改 Tkinter 上的窗口。我的第一个窗口是登录,系统必须进入窗口列表库
  • 销毁一个并创建另一个。

标签: python python-2.7 tkinter


【解决方案1】:

我建议将您的“基础”作为根窗口,并将您的登录窗口作为顶层的实例。您可以最初隐藏基本窗口,或者干脆禁用它并弹出登录窗口。

另一种解决方案是将基本窗口设为框架,将登录窗口设为框架。首先,您将打包/放置/网格登录窗口。当用户登录时,移除登录框架并打包/放置/网格基础框架。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    相关资源
    最近更新 更多