Day15 pygeme鼠標事件內(nèi)置函數(shù)

函數(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ù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容