- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 Python 新手,正在尝试创建一个登录窗口。当用户输入用户名和密码时,程序将检索保存到文本文件中的设置用户名和密码,如果匹配,则用户将能够使用该程序。但是,当我尝试运行该程序时,我不断收到此消息。这是我的代码:
from tkinter import *
login = Tk()
Label(login, text ="Username").grid(row = 0)
Label(login, text ="Password").grid(row = 1)
username = StringVar()
password = StringVar()
i1 = Entry(login, textvariable=username)
i2 = Entry(login, textvariable=password, show = "*")
i1.grid(row = 0, column = 1)
i2.grid(row = 1, column = 1)
def leftClick(username, password):
f = open('godhelpme.txt', 'r')
file = open('some_file.txt', 'r')
if username == (f.read()):
if password == (file.read()):
print ("HELLOOOO")
else:
print ("invalid username/password")
else: print ("invalid username/password")
button2 = Button(login, text = "Log In", command = save)
button2.grid(columnspan = 2)
button2.bind("<Button-1>", leftClick)
login.mainloop()
这就是我尝试为按钮添加两个功能的方法
from tkinter import *
from tkinter import ttk
def win1():
mainframe = ttk.Frame(root, padding = '3 3 12 12')
mainframe.grid(column = 0, row = 0, sticky = (N, W, E, S))
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)
ttk.Button(mainframe, text = 'Register', command = register).grid(
column = 1, row = 1, sticky = W)
ttk.Button(mainframe, text = 'Log In', command = login).grid(
column = 1, row = 2, sticky = W)
root.mainloop()
def combine_funcs(save, quit):
def combined_func(save, quit):
for f in funcs:
f(save, quit)
return combined_funcs
def quit():
root.withdraw()
def register():
quit()
def save():
import json as serializer
with open('godhelpme.txt', 'w') as f:
serializer.dump(username.get(), f)
with open('some_file.txt', 'w') as f:
serializer.dump(password.get(), f)
register.quit()
register = Tk()
Label(register, text ="Username").grid(row = 0)
Label(register, text ="Password").grid(row = 1)
username = StringVar()
password = StringVar()
e1 = Entry (register, textvariable=username)
e2 = Entry (register, textvariable=password, show= "*")
e1.grid(row = 0, column = 1)
e2.grid(row = 1, column = 1)
button1 = Button(register, text = "Register", command = combined_funcs(save, quit))
button1.grid(columnspan = 2)
button1.bind("<Button-1>")
register.mainloop
最佳答案
绑定(bind)按钮时,回调函数应该是获取事件作为参数的函数。 tkinter 不知道您期望获得什么用户名和密码,因此您无法绑定(bind)此类函数。
您需要创建一个回调函数来获取用户输入的用户名和密码,然后使用这些参数调用 leftClick
函数。
也没有必要使用绑定(bind)到
command = save
,因此按下按钮时应调用函数
save
。
您可能想要这样的东西,因为您已经将 Entry 小部件绑定(bind)到变量,因此它们会自动填充:
def clickLogin():
f = open('godhelpme.txt', 'r')
file = open('some_file.txt', 'r')
if username == (f.read()):
if password == (file.read()):
print ("HELLOOOO")
else:
print ("invalid username/password")
else: print ("invalid username/password")
button2 = Button(login, text = "Log In", command = clickLogin)
button2.grid(columnspan = 2)
并且没有调用在按钮上绑定(bind)任何其他内容。
关于python - 类型错误 : leftClick() missing 1 required positional argument: 'password' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30148163/
每当我单击一个 JSlider 时,它都会在单击的方向定位一个 majorTick,而不是跳到我实际单击的位置。 (如果 slider 位于点 47 并且我单击 5,它将跳转到 37 而不是 5)。在
当我在链接上使用 Ctrl + 左键单击 时,有没有办法阻止 Microsoft Edge 浏览器的默认行为? Edge 在新选项卡中打开链接,但我想为 Ctrl + 左键单击 设置自己的事件。 最佳
我试图让我的 CMS 用户通过同时按下 ALT+CTRL 来单击某些控件,但这会导致显示上下文菜单,因为 CTRL+Leftclick 模拟 Rightclick,至少在 Mac OSX(这是我客户端
我是 Python 新手,正在尝试创建一个登录窗口。当用户输入用户名和密码时,程序将检索保存到文本文件中的设置用户名和密码,如果匹配,则用户将能够使用该程序。但是,当我尝试运行该程序时,我不断收到此消
我是一名优秀的程序员,十分优秀!