0 python clipboard user-interface tkinter
我正在研究“密码生成器”,它将生成一串随机字符。我想添加一个“复制”按钮,单击该按钮将获取该随机字符串并将其添加到剪贴板,以便可以将其粘贴到其他位置。
我以为我已经用当前的代码解决了这个问题,因为我不再收到错误消息,但是每当我尝试粘贴密码时,我都会得到类似“ < function genpass at 0x029BA5F0 >”的信息。
import random
from swampy.Gui import *
from Tkinter import *
import string
#--------Globals-------
pcha = string.ascii_letters + string.punctuation + string.digits
g = Gui()
#--------Defs---------
def genpass():
return "".join(random.choice(pcha) for i in range (10))
def close():
g.destroy()
def copy():
g.withdraw()
g.clipboard_clear()
g.clipboard_append(genpass)
#--------GUI----------
g.title("Password Helper")
g.la(text="Welcome to Password Helper! \n \n Choose from the options below to continue. \n")
rndpass = StringVar()
update = lambda:rndpass.set(genpass())
btna = g.bu(text="Generate a New Password", command=update)
btna.pack(padx=5)
pbox = g.en(textvariable = rndpass)
pbox.config(justify='center')
pbox.pack( padx = 5)
btnb=g.bu(text ="Copy to Clipboard", command=copy)
btnc=g.bu(text ="Exit", command=close)
g.mainloop()
Run Code Online (Sandbox Code Playgroud)
我觉得我只是想解决一件事而已,但我只是无法猜测这是什么。我一直在搜索,发现了一些可能的解决方案(甚至是pyperclip),但是无论我如何尝试,我总是会得到相同的结果。任何帮助是极大的赞赏。
这行:
g.clipboard_append(genpass)
Run Code Online (Sandbox Code Playgroud)
正在添加函数 genpass,而不是其返回值
您需要使用调用函数():
g.clipboard_append(genpass())
Run Code Online (Sandbox Code Playgroud)
编辑:看来您要将密码存储在中rndpass。因此,要恢复该状态,您需要致电rndpass.get():
g.clipboard_append(rndpass.get())
Run Code Online (Sandbox Code Playgroud)