<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### 5.2.4 圖形的事件處理 面向對象的概念是和事件驅動編程聯系在一起的。所謂事件是指在程序執行過程中發生的事情,例如點擊了鼠標左鍵、按下了鍵盤上的回車鍵之類。某個對象可以與特定事件綁定 在一起,這樣當特定事件發生時,可以調用特定的函數來處理這個事件。 畫布及畫布上的圖形都是對象,都可以與交互事件綁定,這樣用戶可以利用鍵盤、鼠標 來操作、控制畫布和圖形。第 8 章將詳細介紹 Tkinter 的事件驅動編程,這里我們只用一個 簡單例子展示畫布和圖形對象的事件處理能力。 【程序 5.1】eg5_1.py ``` from Tkinter import * def canvasFunc(event): if c.itemcget(t,"text") == "Hello!": c.itemconfig(t,text="Goodbye!") else: c.itemconfig(t,text="Hello!") def textFunc(event): if c.itemcget(t,"fill") != "white": c.itemconfig(t,fill="white") else: c.itemconfig(t,fill="black") root = Tk() c = Canvas(root,width=300,height=200,bg='white') c.pack() t = c.create_text(150,100,text="Hello!") c.bind("<Button-1>",canvasFunc) c.tag_bind(t,"<Button-3>",textFunc) root.mainloop() ``` 下面我們對此程序中與事件處理有關的幾個要點進行說明。 事件綁定 對象 O 需要與特定事件 E 進行綁定,以便告訴系統當針對 O 發生了 E 之后該如何處理。 程序 5.1 的倒數第 3 行中,利用畫布的 bind()方法將畫布對象 c 與鼠標左鍵點擊事件"&lt;Button-1&gt;"進行了綁定,其中告訴系統當用戶在畫布 c 上點擊鼠標左鍵時,就去執行 函數 canvasFunc()。 程序 5.1 的倒數第 2 行中,利用畫布的 tag_bind()方法將畫布對象 c 上的圖形項(文 本)t 與鼠標右鍵點擊事件"&lt;Button-3&gt;"進行了綁定,其中告訴系統當用戶在文本 t 上 點擊鼠標右鍵時,就去執行函數 textFunc()。 事件處理函數 程序員可以自定義對事件的處理函數。 程序 5.1 中定義了 canvasFunc()函數用于處理畫布上的鼠標左鍵點擊事件,其功能 是改變文本 t 的內容:如果當前內容是"Hello!"就改成"Goodbye!",如果當前是 "Goodbye!"就改成"Hello!"。每當用戶在畫布上點擊鼠標左鍵時就執行一次這個函數, 形成文字內容隨鼠標點擊而切換的效果。 程序 5.1 中還定義了 textFunc()函數用于處理文本上的鼠標右鍵點擊事件,其功能是 改變文本 txt 的顏色:如果當前不是白色則改為白色,否則改為黑色。每當用戶在文本上 點擊鼠標右鍵時就執行一次這個函數,形成文本隨鼠標點擊而出沒的效果。注意畫布背景色 是白色,因此將文本設置為白色就相當于隱去文本。 主事件循環 程序 5.1 中并沒有調用上述兩個事件處理函數的語句,它們是由系統根據所發生的事件 而 自 動調用 的 。系統 如 何知道 現 在發生 了 什么事 件 呢?程 序 5.1 中最后一 行 root.mainloop()的意義是進入根窗口的主事件循環。執行了這一條語句之后,系統就會 自行監控在根窗口上發生的各種事件,并觸發相應的處理函數。 以上對 Tkinter 的事件處理作了簡單介紹,如果讀者仍有疑惑,第 8 章中有詳細介紹。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看