将随机生成的字符串从python复制到剪贴板

时间:2014-04-24 22:33:05

标签: python user-interface tkinter clipboard

我正在使用密码生成器"这将生成一串随机字符。我想添加一个'复制'单击该按钮将获取该随机字符串并将其添加到剪贴板,以便可以将其粘贴到其他位置。

我认为我已经解决了当前的代码,因为我停止收到错误消息,但每当我尝试粘贴密码时,我会得到类似"< 函数genpass在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()

我觉得我错过了一件可以解决我问题的小事,但我无法猜出它是什么。我一直在寻找并找到一些可能的解决方案(甚至是pyperclip),但无论我如何尝试它们,我总会得到相同的结果。任何帮助是极大的赞赏。

1 个答案:

答案 0 :(得分:4)

这一行:

g.clipboard_append(genpass)

正在添加函数 genpass,而不是其返回值

您需要使用()

调用该函数
g.clipboard_append(genpass())

修改:您似乎正在rndpass中存储密码。为了解决这个问题,您需要致电rndpass.get()

g.clipboard_append(rndpass.get())