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

0 投票
1 回答
1968 浏览
提问于 2025-04-18 04:09

我正在做一个“密码生成器”,它可以生成一串随机字符。我想加一个“复制”按钮,点击后可以把这串随机字符复制到剪贴板,这样就可以在其他地方粘贴了。

我觉得我的代码已经差不多了,因为我不再收到错误信息,但每次我尝试粘贴密码时,得到的却是类似于“<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()

我感觉我只差一个小东西就能解决这个问题,但我就是猜不到是什么。我在网上搜索了一些可能的解决方案(甚至包括pyperclip),但无论我怎么尝试,结果总是一样。非常感谢任何帮助。

1 个回答

5

这一行:

g.clipboard_append(genpass)

是在添加 函数 genpass,而不是它返回的值。

你需要用 ()调用 这个函数:

g.clipboard_append(genpass())

编辑:看起来你是把密码存储在 rndpass 里。所以要把它取出来,你需要调用 rndpass.get()

g.clipboard_append(rndpass.get())

撰写回答