【问题标题】:Python how to link function if statements to Tkinter Label?Python如何将函数if语句链接到Tkinter Label?
【发布时间】:2019-09-18 23:43:54
【问题描述】:

这是代码:

from tkinter import *
import glob
import os
from PIL import Image, ImageTk, ImageGrab
import tkinter as tk
import pyautogui
import datetime
import sys
from tkinter import scrolledtext

root = tk.Tk()
root.title("SIGN OFF")
root.minsize(840, 800)
mainframe = tk.Frame(root)
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
mainframe.pack(pady=100, padx=100)

username = Label(mainframe, text = "Username").pack()
usr = Entry(mainframe).pack()
password = Label(mainframe, text = "Password").pack()
pwd = Entry(mainframe).pack()
submit = Button(mainframe, text = "Log in").pack()


def askUser():
    username = input("Username: ")
    password = input("Password: ")

    if username == "Ed" and password == "true":
        app()
    if username == "buxton" and password == "logix":
        app()
    else:
        root.destroy()


root.mainloop()

这将提示我一个带有用户名和密码的窗口。

如何将显示窗口中的用户名输入链接到askUser() 函数用户名,反之亦然与密码?

如果我只使用这段代码并运行它:

def askUser():
    username = input("Username: ")
    password = input("Password: ")

    if username == "Ed" and password == "true":
        app()
    if username == "buxton" and password == "logix":
        app()
    else:
        print("failed")

命令提示符将是输入密码和用户名的主屏幕,但我需要在窗口中获取它。

这是一个小项目,如果有人对这方面的安全性有任何意见,我并不真正关心,但欢迎提出建议! :)

【问题讨论】:

  • 首先:不要使用usr = Entry().pack(),因为它会将None 而不是Entry 分配给usr,因为pack() 总是返回None,然后您就无法访问Entry 获取用户名和密码。您必须分两步完成 usr = Entry() 和 usr.pack()
  • 进行了编辑,我和你是对的吗?
  • 不要更改有问题的代码,因为以后它不适合回答。添加带有更改的新代码。

标签: python tkinter passwords


【解决方案1】:

第一:不要做

  usr = Entry().pack() 

因为它将None 分配给usr,因为pack() 总是返回None,然后您无权访问Entry 来获取用户名和密码。您必须分两步完成

 usr = Entry()
 usr.pack()

对于标签和按钮,您甚至可以跳过变量,因为您不需要它们。


第二:您可以使用command=function_name 访问按钮的功能。它必须是没有() 的名称(所谓的"callback")。

tk.Button(mainframe, text="Log in", command=ask_user)

当您单击按钮时,mainloop 将运行 ask_user()

在ask_user 中,您可以使用.get() 从Entry 获取值

    username = usr.get()
    password = pwd.get()

完整代码:

import tkinter as tk

# --- functions ---

def ask_user():
    username = usr.get()
    password = pwd.get()

    if username == "Ed" and password == "true":
        app()
    if username == "buxton" and password == "logix":
        app()
    else:
        root.destroy()

# --- main ---

root = tk.Tk()

mainframe = tk.Frame(root)
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)
mainframe.pack(pady=100, padx=100)

tk.Label(mainframe, text="Username").pack()

usr = tk.Entry(mainframe)
usr.pack()

tk.Label(mainframe, text="Password").pack()

pwd = tk.Entry(mainframe)
pwd.pack()

tk.Button(mainframe, text="Log in", command=ask_user).pack()

root.mainloop()

【讨论】:

  • 我使用电脑和不同语言已经将近 30 年了。当我开始使用 Python 时,我已经知道如何用许多其他语言编写代码 - 所以我只需要谷歌就可以找到我试图解决的问题的示例。主要是我自己使用的文件/图像/数据/网页的问题。 tkinter 也是如此。目前,当我忘记某些事情时,我有时会检查documentation for Tkinter。它既旧又不完整,但对我来说仍然是最有用的页面。
猜你喜欢
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多