我不是初學者,但我不知道如何檢查用戶是否與任何小部件互動并在 Tkinter 中執行功能
我的預期是這樣的
root.bind("<interact>", do_something())
編輯 :
我得到了答案
from tkinter import *
from tkinter import ttk
root = Tk()
def printzero(event):
print(0)
btn1 = Button(text=" e ")
btn1.pack()
btn1 = Button(text=" e ")
btn1.pack()
btn1 = Button(text=" e ")
btn1.pack()
txt1 = Text()
txt1.pack()
root.bind("<Button-1>", printzero)
root.bind("<Button-2>", printzero)
root.bind("<Button-3>", printzero)
root.bind("<Key>", printzero)
root.mainloop()
uj5u.com熱心網友回復:
當您將函式系結到小部件的事件時,您實際上并未系結到小部件。相反,您系結到一個標簽(或系結標簽)。當小部件接收到事件時,它會查看小部件的每個系結標簽,看看它們是否系結到一個函式。
默認情況下,每個小部件都將自己作為一個系結標簽,并且它還獲得了一個特殊的標簽“all”。無論哪個小部件獲取事件,您都可以系結到此標記以觸發事件。
例如,假設您在變數 中有一個小部件root和一個名為 的函式notify,以下將導致在整個 GUI 中單擊任何小部件或按任意鍵時呼叫該函式:
root.bind_all("<Any-ButtonPress>", notify)
root.bind_all("<Any-KeyPress>", notify)
這是一個作業示例,每次單擊滑鼠按鈕或按鍵時都會更新標簽:
import tkinter as tk
root = tk.Tk()
output_label = tk.Label(root, width=40)
entry = tk.Entry(root)
text = tk.Text(root, width=40, height=4, yscrollcommand=lambda *args: scrollbar.set(*args))
scrollbar = tk.Scrollbar(root, command=text.yview)
button = tk.Button(root, text="A button")
canvas = tk.Canvas(root, background="bisque", width=200, height=200)
output_label.pack(side="top", fill="x")
entry.pack(side="top", fill="x")
button.pack(side="bottom")
canvas.pack(side="bottom", fill="both", expand=True)
text.pack(side="left", fill="both", expand=True)
scrollbar.pack(side="right", fill="y")
counter = 0
def notify(event):
global counter
counter = 1
output_label.configure(text=f"count: {counter} widget: {event.widget}")
root.bind_all("<Any-ButtonPress>", notify)
root.bind_all("<Any-KeyPress>", notify)
root.mainloop()

uj5u.com熱心網友回復:
因此,我建議的主要方法是呼叫一個函式并讓該函式通知您或執行您擁有的任何所需資訊。在盡可能簡單的代碼中,我已經包含了。
from tkinter import *
def buttonClicked():
print("button was clicked")
top = Tk()
send = Button(top, text='Send', command=buttonClicked)
send.pack(side=LEFT)
top.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/385744.html
