1. 程式人生 > >Pygame詳解(十):mouse 模組

Pygame詳解(十):mouse 模組

pygame.mouse

Pygame 中與滑鼠工作相關的模組。

函式

  • pygame.mouse.get_pressed()  ——  獲取滑鼠按鍵的情況(是否被按下)
  • pygame.mouse.get_pos()  ——  獲取滑鼠游標的位置
  • pygame.mouse.get_rel()  ——  獲取滑鼠一系列的活動
  • pygame.mouse.set_pos()  ——  設定滑鼠游標的位置
  • pygame.mouse.set_visible()  ——  隱藏或顯示滑鼠游標
  • pygame.mouse.get_focused()  ——  檢查程式介面是否獲得滑鼠焦點
  • pygame.mouse.set_cursor()  ——  設定滑鼠游標在程式內的顯示影象
  • pygame.mouse.get_cursor()  ——  獲取滑鼠游標在程式內的顯示影象

這些函式可以用於獲取目前滑鼠裝置的情況,也可以改變滑鼠在程式內的顯示游標。

當設定顯示模式之後,事件佇列將開始接收滑鼠事件。當滑鼠按鍵被按下時會產生 pygame.MOUSEBUTTONDOWN 事件,當滑鼠按鍵被鬆開時會產生 pygame.MOUSEBUTTONUP 事件。這些事件包含了一個按鍵屬性,用於表示具體由哪個按鍵所觸發。

當滑鼠滑輪被滾動時也會產生 pygame.MOUSEBUTTONDOWN 和 pygame.MOUSEBUTTONUP 事件。當滑鼠滑輪往上滾動時,按鍵將會被設定成4;當滑鼠滑輪向下滾動時,按鍵會被設定成 5。

任何時候滑鼠移動都會產生一個 pygame.MOUSEMOTION 事件。滑鼠的活動被拆分成小而精確的事件。當滑鼠運動時,大量的運動事件會被放入相應的佇列中等待處理。沒有及時清除掉一些運動事件是佇列被塞滿的主要原因。

如果滑鼠游標被隱藏並且輸入被當前顯示器佔用,滑鼠會進入虛擬輸入模式,在此模式內,滑鼠的相關活動不會因為螢幕的邊界限制而停止。呼叫 pygame.mouse.set_visible() 方法和

pygame.event.set_grab()  方法進行設定。

函式詳解

pygame.mouse.get_pressed()

獲取滑鼠按鍵的情況(是否被按下)。

get_pressed() -> (button1, button2, button3)

返回一個由布林值組成的列表,代表所有滑鼠按鍵被按下的情況。True 意味著在呼叫此方法時該滑鼠按鍵正被按下。

注意1:獲取所有的滑鼠事件最好是使用 pygame.event.wait() 方法或者 pygame.event.get() 方法,然後檢查確認所有事件是 MOUSEBUTTONDOWN、MOUSEBUTTONUP 或者 MOUSEMOTION。

注意2:在 X11 上一些 XServers 使用中間按鍵模擬機制。當你同時點選按鍵 1 和 3 時會發出一個按鍵 2 被按下的事件。

注意3:在使用此方法前記住要先呼叫 pygame.event.get() 方法,否則此方法將不會工作。

pygame.mouse.get_pos()

獲取滑鼠游標的位置。

get_pos() -> (x, y)

返回滑鼠游標的座標 (x, y)。這個座標以視窗左上角為基準點。游標位置可以被定位於視窗之外,但是通常被強制性限制在螢幕內。

pygame.mouse.get_rel()

獲取滑鼠一系列的活動。

get_rel() -> (x, y)

返回在呼叫此方法之前的一系列活動座標 (x, y)。滑鼠游標的相關活動被限制在螢幕範圍內,但是通過虛擬輸入模式可以突破這個限制。此頁面的頂部有虛擬輸入模式的描述。

pygame.mouse.set_pos()

設定滑鼠游標的位置。

set_pos([x, y]) -> None

通過提供相應的引數來設定當前滑鼠的位置。如果滑鼠游標是可視的,則游標將會跳到新的座標上。移動滑鼠將會產生一個新的 pygame.MOUSEMOTION 事件。

pygame.mouse.set_visible()

隱藏或顯示滑鼠游標。

set_visible(bool) -> bool

如果返回的布林值為 True,滑鼠游標將會是可視的。返回游標在呼叫該方法之前的視覺化情況。

pygame.mouse.get_focused()

檢查程式介面是否獲得滑鼠焦點。

get_focused() -> bool

當 pygame 正在接受滑鼠輸入事件(或者用專業術語說,滑鼠正在處於“active”或“focus”狀態)返回值為 True。

一般情況下此方法用於視窗模式。在全屏模式下,該方法總會返回 True。

注意:在 MS Windows 系統中,一個視窗可以同時對滑鼠和鍵盤事件保持監聽。但是在 X-Windows 系統中,需要用一個視窗監聽滑鼠事件而另一個視窗監聽鍵盤事件。pygame.mouse.get_focused() 可以表示 pygame 視窗是否在接收滑鼠事件。

pygame.mouse.set_cursor()

設定滑鼠游標在程式內的顯示影象。

set_cursor(size, hotspot, xormasks, andmasks) -> None

當滑鼠游標是可視的時,它將通過我們提供的位掩碼陣列顯示為一個黑白色的點陣圖。size 指定游標的寬度和高度。hotspot 指定游標的熱點位置。xormasks 指定一組位元組,用於進行按位異或掩碼的計算。andmasks 指定一組位元組,用於進行按位與掩碼的計算。

游標的寬度必須是 8 的倍數,並且提供的位掩碼陣列必須與寬度、高度匹配。否則將丟擲異常。

關於如何建立一個系統游標,請檢視 pygame.cursor 模組。

pygame.mouse.get_cursor()

獲取滑鼠游標在程式內的顯示影象。

get_cursor() -> (size, hotspot, xormasks, andmasks)

獲取關於系統游標的資訊。返回值是與 pygame.mouse.set_cursor() 的傳遞引數相同的資料。