簡體   English   中英

在復雜的Tkinter代碼上綁定“ Enter”

[英]Bind 'Enter' on complicated Tkinter code

我正在嘗試對在GitHub上找到的代碼進行一些調整。 tkinter gui可以完美運行,但我想將Enter按鈕綁定到“ Get Response”按鈕:

class TkinterGUIExample(tk.Tk):

    def initialize(self):
        '''
        Set window layout.
        '''
        self.grid()

        self.usr_input = ttk.Entry(self, state='normal')
        self.usr_input.grid(column=0, row=0, sticky='nesw', padx=3, pady=3)

        self.respond = ttk.Button(self, text='Get Response', command=self.get_response)
        self.respond.grid(column=1, row=0, sticky='nesw', padx=3, pady=3)

        self.conversation_lbl = ttk.Label(self, anchor=tk.E, text='Conversation:')
        self.conversation_lbl.grid(column=0, row=1, sticky='nesw', padx=3, pady=3)

        self.conversation = ScrolledText.ScrolledText(self, state='disabled')
        self.conversation.grid(column=0, row=2, columnspan=2, sticky='nesw', padx=3, pady=3)

所以我知道我的按鈕在哪里,但是我不知道在使用相同語法時如何,何時或在何處綁定它。

我的完整代碼可以在這里找到: https : //github.com/graylu21/ELIZA-ChatterBot/blob/master/ELIZAChatterBot.py

只需向'<Return>'添加綁定:

self.respond = ttk.Button(self, text='Get Response', command=self.get_response)
self.respond.grid(column=1, row=0, sticky='nesw', padx=3, pady=3)
self.bind('<Return>', self.get_response)

self窗口處於活動狀態時,每當按Enter / Return (Tkinter使用后者,因為'<Enter>'指的是當鼠標光標進入小部件時),它將調用self.get_response

得到它的工作! 在以下位置的評論中找到了解決方案: 如何將Enter鍵綁定到Tkinter中的按鈕

我沒有將Enter鍵綁定到按鈕,而是將其綁定到Entry窗口!

    self.usr_input = ttk.Entry(self, state='normal')
    self.usr_input.grid(column=0, row=0, sticky='nesw', padx=3, pady=3)
    self.usr_input.focus() #Sets focus to the input bar at start
    self.usr_input.bind('<Return>', lambda e: self.get_response()) #Binds the Enter key

    self.respond = ttk.Button(self, text='Get Response', command=self.get_response)
    self.respond.grid(column=1, row=0, sticky='nesw', padx=3, pady=3)

暫無
暫無

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

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