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