簡體   English   中英

鼠標單擊時python tkinter.ttk組合框關閉事件

[英]python tkinter.ttk combobox down event on mouseclick

盡管進行了深入研究並且相當簡單,但我仍未找到正確的答案。 我所要做的就是,當我按下“按鈕1”時,下拉列表框會下拉。 但是,無論我編寫什么代碼,組合都不會像我期望的那樣運行。

以下我准備了一個簡單的代碼來演示我的問題:

from tkinter import *
import tkinter.ttk


def combo_events(evt):
    if int(evt.type) is 4:
        w = evt.widget
        w.event_generate('<Down>')


root = Tk()
li = ('row 1', 'row 2', 'row 3')

combo1 = tkinter.ttk.Combobox(root, value=li)
combo2 = tkinter.ttk.Combobox(root, value=li)

combo1.bind('<Button-1>', combo_events)
combo2.bind('<Button-1>', combo_events)

combo1.pack()
combo2.pack()

root.mainloop()

好吧,如果我嘗試使用此代碼,則下拉菜單會下拉列表,但不會如預期的那樣。 因此,我嘗試添加“ FocusIn”事件的綁定,但這使情況復雜化並禁止了“ FocusOut” ...

任何人都可以幫助我實現目標嗎?

ps:我知道,該組合將通過單擊小部件的框架而下拉,但更確切地說,我想在單擊時將其拖放。

順便說一句,在哪里可以找到組合框可以觸發的事件的完整列表?

感謝努力和回答。

為什么使用int(evt.type) is 4而不是int(evt.type) == 4

應用此更改對我有用。

編輯1

首先,感謝您向我們解釋您真正想要的東西。 沒想到您最初提出這個問題。

如果要覆蓋編輯行為,那么該進行更深入的研究了。

您在組合框中單擊的小部件是輸入小部件。 現在,您可以定義在事件鏈中何時提取事件。 即將應用代碼。

編輯2

要在第一個鼠標上單擊它,請執行以下操作:

w.event_generate('<Down>', when='head')

為什么? 因為事件生成的默認值是將生成的事件附加到事件鏈(將其放在末尾,所以value ='tail')。 更改為when='head'可以滿足您的期望行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM