【问题标题】:tkinter: Copy to clipboard via buttontkinter:通过按钮复制到剪贴板
【发布时间】:2022-01-20 21:43:21
【问题描述】:

代码的想法是创建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 没有加载,空闲窗口只是打开。

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

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

【问题讨论】:

标签: python tkinter


【解决方案1】:

问题是 tkinter UI 没有加载

是的,但你告诉withdraw(),所以你看不到它。

为此,您需要一个偏函数或 lambda 函数,您不能在命令参数中使用普通函数调用。试试这个:

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()

【讨论】:

    猜你喜欢
    • 2011-06-21
    • 2010-09-23
    • 2014-04-30
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 2012-01-08
    相关资源
    最近更新 更多