Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在tkinter GUI的后台按键并执行功能?_Python_Tkinter - Fatal编程技术网

Python 如何在tkinter GUI的后台按键并执行功能?

Python 如何在tkinter GUI的后台按键并执行功能?,python,tkinter,Python,Tkinter,我正在制作一个可以制作可选副本的程序,例如,当按下一个键时,它会粘贴您在程序中选择的内容,或者按下一个键,它会粘贴您在程序中选择的内容。。 但是这个程序应该在后台工作(最小化),但是它不工作 from tkinter import * from tkinter import ttk first = '' second = '' root = Tk() #root.withdraw() ttk.Label(root, text="1st copy").grid(row=0, column=0,

我正在制作一个可以制作可选副本的程序,例如,当按下一个键时,它会粘贴您在程序中选择的内容,或者按下一个键,它会粘贴您在程序中选择的内容。。 但是这个程序应该在后台工作(最小化),但是它不工作

from tkinter import *
from tkinter import ttk

first = ''
second = ''

root = Tk()
#root.withdraw()
ttk.Label(root, text="1st copy").grid(row=0, column=0, padx=3, sticky='w')

copy1 = ttk.Entry(root, width=36)
copy1.grid(row=0, column=1, columnspan=2)

ttk.Label(root, text="2nd copy").grid(row=1, column=0, padx=3, sticky='w')

copy2 = ttk.Entry(root, width=36)
copy2.grid(row=1, column=1, columnspan=2)

savebutton = ttk.Button(root, text='save')
savebutton.grid(row=2, column=2, sticky='e')
savebutton.config(command=lambda:save())

def save():
    global first, second
    first = copy1.get()
    second = copy2.get()

def BuClick(x):
    global first, second

    root.clipboard_clear()
    if x == 1:
        root.clipboard_append(first)
    else:
        root.clipboard_append(second)
    root.update()



root.bind('1', lambda x = 1:BuClick(1))
root.bind('2', lambda y = 2:BuClick(2))
那么我怎样才能让它在后台工作呢??
提前感谢。

您可以像这样使用键盘

import keyboard as kb
def call_back():
    pass
kb.add_hotkey("shift+1",call_back,args)
kb.wait()

然而,即使焦点不在应用程序上(如果您使用的是另一个应用程序),也会调用它。

您可以像这样使用键盘

import keyboard as kb
def call_back():
    pass
kb.add_hotkey("shift+1",call_back,args)
kb.wait()

但是,即使焦点不在你的应用程序上(如果你使用的是另一个应用程序),也会调用此函数。

在Tkinter中,要在后台执行某些操作,你应该使用此方法。这会将和事件放入UI事件队列中,该队列在延迟一段时间后调用您的函数。在这种情况下,
root.bind(“”,lambda:root.after_idle(BuClick(first))
应该这样做。当事件队列空闲时(即:不处理其他UI事件,如鼠标移动或窗口重画等),这会安排调用
BuClick

在Tkinter中,要在后台执行某些操作,应使用该方法。这会将和事件放入UI事件队列中,该队列在延迟一段时间后调用您的函数。在这种情况下,
root.bind(“”,lambda:root.after_idle(BuClick(first))
应该这样做。一旦事件队列空闲(即:不处理其他UI事件,如鼠标移动或窗口重画等),这会安排调用
BuClick

启动一个线程并行工作到UI启动一个线程并行工作到UI恐怕不行,我想你能用我的代码给我吗,我想它不起作用了,你能用我的代码给我吗?恐怕,我想它不起作用了,你能用我的代码给我吗?事实上,我没有工作,或者我没有正确使用它,你能把它粘贴到我的代码中,然后给我吗。。我很抱歉压力太大了!我担心,我认为它不起作用。你能把它和我的代码一起给我吗?实际上我没有起作用,或者可能我没有正确地使用它。你能把它粘贴到我的代码中然后给我吗。。我很抱歉压力太大了!