繁体   English   中英

tkinter:通过按钮复制到剪贴板

[英]tkinter: Copy to clipboard via button

代码的想法是创建 N 个按钮,这些按钮在按下时将文本复制到剪贴板,覆盖并保存上次按下按钮的文本。

from tkinter import *
import tkinter
r = Tk()
age = '''
O.o
    giga
'''
gage = 'vrum'
r.title("getherefast")

def gtc(dtxt):
    r.withdraw()
    r.clipboard_clear()
    r.clipboard_append(dtxt)
    r.update()

tkinter.Button(text='age', command=gtc(age)).grid(column=1, row=0)
tkinter.Button(text='gage', command=gtc(gage)).grid(column=2, row=0)

r.mainloop()

使用此代码,我希望获得 2 个按钮“年龄”和“量具”,当我按下它们分别获取保存在 var 中的值时。

问题是 tkinter UI 没有加载,空闲 window 只是打开。

结果是我将“vrum”复制到剪贴板(如果年龄按钮是唯一的 1,我会得到正确的值,但仍然没有来自 tkinter 的 GUI)。

作为附加信息,我正在 IDLE 中编写和测试代码,Python 3.10。

问题是 tkinter UI 无法加载

是的,确实如此,但是您告诉它要withdraw() ,所以您看不到它。

为此,您需要部分或 lambda function,您不能在命令参数中使用普通的 function 调用。 尝试这个:

import tkinter
r = tkinter.Tk()
age = '''
O.o
    giga
'''
gage = 'vrum'
r.title("getherefast")

def gtc(dtxt):
    r.clipboard_clear()
    r.clipboard_append(dtxt)

tkinter.Button(text='age', command=lambda: gtc(age)).grid(column=1, row=0)
tkinter.Button(text='gage', command=lambda: gtc(gage)).grid(column=2, row=0)

r.mainloop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM