函數(shù)
pygame.mouse
? pygame.mouse.get_pressed() —— 獲取鼠標按鍵的情況(是否被按下)
?pygame.mouse.get_pos() —— 獲取鼠標光標的位置
?pygame.mouse.get_rel() —— 獲取鼠標一系列的活動
?pygame.mouse.set_pos() —— 設(shè)置鼠標光標的位置
?pygame.mouse.set_visible() —— 隱藏或顯示鼠標光標
?pygame.mouse.get_focused() —— 檢查程序界面是否獲得鼠標焦點
?pygame.mouse.set_cursor() —— 設(shè)置鼠標光標在程序內(nèi)的顯示圖像
?pygame.mouse.get_cursor() —— 獲取鼠標光標在程序內(nèi)的顯示圖像
這些函數(shù)可以用于獲取目前鼠標設(shè)備的情況,也可以改變鼠標在程序內(nèi)的顯示光標。
當設(shè)置顯示模式之后,事件隊列將開始接收鼠標事件。當鼠標按鍵被按下時會產(chǎn)生 pygame.MOUSEBUTTONDOWN 事件,當鼠標按鍵被松開時會產(chǎn)生 pygame.MOUSEBUTTONUP 事件。這些事件包含了一個按鍵屬性,用于表示具體由哪個按鍵所觸發(fā)。
當鼠標滑輪被滾動時也會產(chǎn)生 pygame.MOUSEBUTTONDOWN 和 pygame.MOUSEBUTTONUP 事件。當鼠標滑輪往上滾動時,按鍵將會被設(shè)置成4;當鼠標滑輪向下滾動時,按鍵會被設(shè)置成 5。
任何時候鼠標移動都會產(chǎn)生一個 pygame.MOUSEMOTION 事件。鼠標的活動被拆分成小而精確的事件。當鼠標運動時,大量的運動事件會被放入相應(yīng)的隊列中等待處理。沒有及時清除掉一些運動事件是隊列被塞滿的主要原因。
如果鼠標光標被隱藏并且輸入被當前顯示器占用,鼠標會進入虛擬輸入模式,在此模式內(nèi),鼠標的相關(guān)活動不會因為屏幕的邊界限制而停止。調(diào)用 pygame.mouse.set_visible() 方法和 pygame.event.set_grab() 方法進行設(shè)置。
函數(shù)詳解
pygame.mouse.get_pressed()
獲取鼠標按鍵的情況(是否被按下)。
get_pressed() -> (button1, button2, button3)
返回一個由布爾值組成的列表,代表所有鼠標按鍵被按下的情況。True 意味著在調(diào)用此方法時該鼠標按鍵正被按下。
注意1:獲取所有的鼠標事件最好是使用 pygame.event.wait() 方法或者 pygame.event.get() 方法,然后檢查確認所有事件是 MOUSEBUTTONDOWN、MOUSEBUTTONUP 或者 MOUSEMOTION。
注意2:在 X11 上一些 XServers 使用中間按鍵仿真機制。當你同時點擊按鍵 1 和 3 時會發(fā)出一個按鍵 2 被按下的事件。
注意3:在使用此方法前記住要先調(diào)用 pygame.event.get() 方法,否則此方法將不會工作。
pygame.mouse.get_pos()
獲取鼠標光標的位置。
get_pos() -> (x, y)
返回鼠標光標的坐標 (x, y)。這個坐標以窗口左上角為基準點。光標位置可以被定位于窗口之外,但是通常被強制性限制在屏幕內(nèi)。
pygame.mouse.get_rel()
獲取鼠標一系列的活動。
get_rel() -> (x, y)
返回在調(diào)用此方法之前的一系列活動坐標 (x, y)。鼠標光標的相關(guān)活動被限制在屏幕范圍內(nèi),但是通過虛擬輸入模式可以突破這個限制。此頁面的頂部有虛擬輸入模式的描述。
pygame.mouse.set_pos()
設(shè)置鼠標光標的位置。
set_pos([x, y]) -> None
通過提供相應(yīng)的參數(shù)來設(shè)置當前鼠標的位置。如果鼠標光標是可視的,則光標將會跳到新的坐標上。移動鼠標將會產(chǎn)生一個新的 pygame.MOUSEMOTION 事件。
pygame.mouse.set_visible()
隱藏或顯示鼠標光標。
set_visible(bool) -> bool
如果返回的布爾值為 True,鼠標光標將會是可視的。返回光標在調(diào)用該方法之前的可視化情況。
pygame.mouse.get_focused()
檢查程序界面是否獲得鼠標焦點。
get_focused() -> bool
當 pygame 正在接受鼠標輸入事件(或者用專業(yè)術(shù)語說,鼠標正在處于“active”或“focus”狀態(tài))返回值為 True。
一般情況下此方法用于窗口模式。在全屏模式下,該方法總會返回 True。
注意:在 MS Windows 系統(tǒng)中,一個窗口可以同時對鼠標和鍵盤事件保持監(jiān)聽。但是在 X-Windows 系統(tǒng)中,需要用一個窗口監(jiān)聽鼠標事件而另一個窗口監(jiān)聽鍵盤事件。pygame.mouse.get_focused() 可以表示 pygame 窗口是否在接收鼠標事件。
pygame.mouse.set_cursor()
設(shè)置鼠標光標在程序內(nèi)的顯示圖像。
set_cursor(size, hotspot, xormasks, andmasks) -> None
當鼠標光標是可視的時,它將通過我們提供的位掩碼數(shù)組顯示為一個黑白色的位圖。size 指定光標的寬度和高度。hotspot 指定光標的熱點位置。xormasks 指定一組字節(jié),用于進行按位異或掩碼的計算。andmasks 指定一組字節(jié),用于進行按位與掩碼的計算。
光標的寬度必須是 8 的倍數(shù),并且提供的位掩碼數(shù)組必須與寬度、高度匹配。否則將拋出異常。
關(guān)于如何創(chuàng)建一個系統(tǒng)光標,請查看 pygame.cursor 模塊。
pygame.mouse.get_cursor()
獲取鼠標光標在程序內(nèi)的顯示圖像。
get_cursor() -> (size, hotspot, xormasks, andmasks)
獲取關(guān)于系統(tǒng)光標的信息。返回值是與 pygame.mouse.set_cursor() 的傳遞參數(shù)相同的數(shù)據(jù)。