Python 如何 link 函数 if 语句到 Tkinter 标签?
Python how to link function if statements to Tkinter Label?
这是代码:
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()
这将提示我 window 以及用户名和密码。
我如何 link 从显示的 window 到 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")
命令提示符将是输入密码和用户名的主屏幕,但我需要在 window.
上获取它
这是一个小项目,如果有人对此有任何安全方面的意见,我并不关心,但欢迎提出建议! :)
第一:不要做
usr = Entry().pack()
因为它将 None
分配给 usr
因为 pack()
总是 returns 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()
这是代码:
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()
这将提示我 window 以及用户名和密码。
我如何 link 从显示的 window 到 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")
命令提示符将是输入密码和用户名的主屏幕,但我需要在 window.
上获取它这是一个小项目,如果有人对此有任何安全方面的意见,我并不关心,但欢迎提出建议! :)
第一:不要做
usr = Entry().pack()
因为它将 None
分配给 usr
因为 pack()
总是 returns 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()