想知道如何將事件系結到滑鼠左鍵,但不必將滑鼠懸停在視窗/應用程式/根目錄中。基本上,我希望事件發生在我的滑鼠指標碰巧在我的螢屏上的任何地方。現在我只能弄清楚當滑鼠懸停在視窗/應用程式/根目錄上時如何使滑鼠按鈕系結起作用。
from tkinter import*
from tkinter import Tk, Label, StringVar
import random
import pyautogui
root = Tk()
root.configure(background='black')
root.attributes("-topmost", True)
root.overrideredirect(True)
root.geometry("100x100")
title_bar = Frame(root, bg='black')
title_bar.pack(side=TOP, fill=X)
tout = StringVar()
label = Label(root, textvariable=tout, font=('TkDefaultFont',
50), bg='black', fg='red')
label.pack()
def _quit():
root.quit()
root.destroy()
def move_app(event):
root.geometry(f' {event.x_root} {event.y_root}')
def gen_rand(event):
randvar = random.randint(0,99)
tout.set(randvar)
def clear_rand(event):
tout.set("")
myButton = Button(title_bar, text="X", font=('TkDefaultFont', 5),
bg='black', activebackground='red', fg='red', command=_quit)
myButton.pack(side=RIGHT)
root.bind('<Button-1>', gen_rand)
root.bind('<Button-3>', clear_rand)
root.bind("<B2-Motion>", move_app)
root.mainloop()
uj5u.com熱心網友回復:
你不能用 tkinter 做到這一點,你必須找到一些特定于平臺的方法來做到這一點。Tkinter 只能在應用程式處于焦點時處理事件。
uj5u.com熱心網友回復:
這不是 Tkinter 可以做到的,而是 Pyautogui 來生成事件
pyautogui.click(x=100, y=200) # move to 100, 200, then click the left mouse button.
如果你想讀取一個事件,你必須使用其他模塊,例如 pynput 如何知道滑鼠左鍵是否被按下
from pynput import mouse
def on_click(x, y, button, pressed):
if button == mouse.Button.left:
print('{} at {}'.format('Pressed Left Click' if pressed else 'Released Left Click', (x, y)))
return False # Returning False if you need to stop the program when Left clicked.
else:
print('{} at {}'.format('Pressed Right Click' if pressed else 'Released Right Click', (x, y)))
listener = mouse.Listener(on_click=on_click)
listener.start()
listener.join()```
[1]: https://pypi.org/project/PyAutoGUI/
[2]: https://stackoverflow.com/questions/39235454/how-to-know-if-the-left-mouse-click-is-pressed
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/413726.html
標籤:
