Python Tkinter 框架

托马斯·卡约

为什么我的程序没有像标签一样改变框架?

我的 LoginPage 正确检查了用户和密码,但我不知道如何在验证后切换到主程序。

import tkinter as tk
from tkinter import ttk
import dbm

class Program(tk.Tk):
    def __init__(self, *args,**kwargs):
        tk.Tk.__init__(self,*args,**kwargs)
        container = tk.Frame(self)
        container.pack(side='top',fill='both',expand=True)
        container.grid_rowconfigure(0,weight=1)
        container.grid_columnconfigure(0,weight=1)

        self.frames = {}
        Frames = (LoginPage, StartPage)
        for F in Frames:
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=0, column = 0, sticky="nsew")

        self.ShowF(LoginPage)

    def ShowF(self, cont):
        frame = self.frames[cont]
        frame.tkraise()

class LoginPage(tk.Frame):
    def __init__(self,parent,controller):
        tk.Frame.__init__(self,parent)
        stats = tk.Label(self, text = 'Insira os dados para a validação')
        stats.pack()
        lab = tk.Label(self, text = ('Usuário'))
        lab.pack()
        self.ent = tk.Entry(self)
        self.ent.pack()
        lab2 = tk.Label(self, text = ('Senha'))
        lab2.pack()
        self.ent2 = tk.Entry(self, show='*')
        self.ent2.pack()
        but = tk.Button(self, text = 'Validar', command = self.Validacao)
        but.pack()
        self.lab3 = tk.Label(self, text = '')
        self.lab3.pack()

    def Validacao(self):
        user = self.ent.get()
        passw = self.ent2.get()
        with dbm.open('files/contas','rb') as contas:
            accv = [key1.decode() for key1 in contas.keys()]
            passv = [contas[key].decode() for key in contas.keys()]
            while True:
                try:
                    k = accv.index(user)
                    k1 = passv.index(passw)
                    break
                except:
                    self.lab3['text'] = ('Usuário e/ou senha inválidos!')
                    return
            if k == k1:
                self.lab3['text'] = ('Validação concluída!')
                lambda :controller.ShowF(StartPage) #The problem is here(I think)

class StartPage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self,parent)
        label = tk.Label(self, text="Start Page")
        label.pack(pady=10, padx=10)

        button = tk.Button(self, text="Button1")
        button.pack()
        buttona = tk.Button(self, text="Button2")
        buttona.pack()

app = Program()
app.mainloop()
布莱恩奥克利

lambda :controller.ShowF(StartPage)不调用函数,它返回一个调用函数的新函数。您需要删除lambda

self.controller.ShowF(StartPage)

此外,您的代码需要保存对以下内容的引用controller

class LoginPage(tk.Frame):
    def __init__(self,parent,controller):
        self.controller = controller
        ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python Tkinter框架对齐

来自分类Dev

Python Tkinter框架对齐

来自分类Dev

Tkinter和python的框架列表

来自分类Dev

tkinter框架没有几何python tkinter

来自分类Dev

Python Tkinter可滚动框架类?

来自分类Dev

Python Tkinter:调整框架大小的问题

来自分类Dev

销毁不同框架python tkinter中的标签

来自分类Dev

Tkinter框架无法正确居中(Python)

来自分类Dev

Python Tkinter:调整框架大小的问题

来自分类Dev

在子框架Tkinter(Python)中管理命令

来自分类Dev

用于堆叠框架的 Python/Tkinter 退出按钮

来自分类Dev

Python Tkinter框架newby几何问题?

来自分类Dev

麻烦用python tkinter布局框架(框架内的框架使父框架不可见)

来自分类Dev

如何在python tkinter中重叠窗口小部件/框架?

来自分类Dev

Python / Tkinter:动态扩展字体大小以填充框架

来自分类Dev

python 3.4 tkinter框架未在垂直方向填充

来自分类Dev

Python Tkinter更改框架背景颜色似乎无效

来自分类Dev

在python Tkinter中的另一个框架内

来自分类Dev

Python Tkinter框架窗口小部件选项(可视和类)

来自分类Dev

python 3.4 tkinter框架未在垂直方向上填充

来自分类Dev

在tkinter python 3.5的PanedWindow中提高框架的顶部

来自分类Dev

Python tkinter:不断更新框架中的标签

来自分类Dev

如何创建具有类似按钮功能的 Python tkinter 框架?

来自分类Dev

为什么我的框架不能打包 python3 tkinter

来自分类Dev

如何刷新或销毁在 tkinter python 画布中创建的框架?

来自分类Dev

Python Tkinter-使用嵌套框架时无法定位子框架

来自分类Dev

将小部件放入框架内的框架时出错。Tkinter - Python3

来自分类Dev

使用tkinter的框架布局

来自分类Dev

在tkinter中创建框架

Related 相关文章

热门标签

归档