[PyQt5][Python]更改滑鼠光標

閱讀時間約 8 分鐘

要讓滑鼠光標根據不同的繪圖模式改變形狀,可以使用 PyQt 的 QCursor 類來設置不同的滑鼠光標圖標。

假設是要畫ROI在畫布上,這樣當切換到矩形、圓形、筆等不同模式時,滑鼠光標會變為對應的圖標。

以下是如何實現這種效果的步驟:

  1. 定義光標變化的方法:根據不同的模式設置相應的光標,例如十字光標、筆形光標等。
  2. 在模式切換方法中調用光標變化方法:在 set_rect_modeset_circle_mode 等模式設置方法中調用設置光標的方法。

示意圖

raw-image
raw-image

程式範例

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
from PyQt5.QtCore import Qt

class CursorSwitcher(QWidget):
def __init__(self):
super().__init__()
self.initUI()

# 預設的滑鼠光標樣式
self.cursor_styles = [
Qt.ArrowCursor, # 預設箭頭
Qt.WaitCursor, # 沙漏/等待
Qt.PointingHandCursor, # 手形
Qt.CrossCursor, # 十字
Qt.IBeamCursor # 文本選擇
]
self.current_cursor_index = 0 # 當前的光標索引

def initUI(self):
# 創建按鈕
self.button = QPushButton("切換滑鼠光標樣式", self)
self.button.clicked.connect(self.switch_cursor)

# 設置佈局
layout = QVBoxLayout()
layout.addWidget(self.button)
self.setLayout(layout)

# 設置窗口屬性
self.setWindowTitle("滑鼠光標切換器")
self.resize(300, 100)

def switch_cursor(self):
# 切換到下一個光標樣式
self.current_cursor_index = (self.current_cursor_index + 1) % len(self.cursor_styles)
self.setCursor(self.cursor_styles[self.current_cursor_index])

if __name__ == "__main__":
app = QApplication(sys.argv)
window = CursorSwitcher()
window.show()
sys.exit(app.exec_())

程式碼說明

  • cursor_styles:定義了一組滑鼠光標樣式。
  • switch_cursor():每次按下按鈕時,切換到下一個光標樣式,並將其應用到視窗上。
  • current_cursor_index:用來跟踪當前的光標樣式,以便循環切換。

執行此程式後,點擊「切換滑鼠光標樣式」按鈕就可以在不同的滑鼠光標樣式之間切換。


PyQt5 提供了多種內建的標準光標,可以通過 Qt 模組中的常量來設置這些光標。

以下是常見的 QCursor 光標類型:

from PyQt5.QtCore import Qt

# 常見的 QCursor 光標類型:
cursor_types = {
"ArrowCursor": Qt.ArrowCursor, # 預設箭頭光標
"UpArrowCursor": Qt.UpArrowCursor, # 向上箭頭
"CrossCursor": Qt.CrossCursor, # 十字光標
"WaitCursor": Qt.WaitCursor, # 等待光標(通常為沙漏或旋轉光標)
"IBeamCursor": Qt.IBeamCursor, # I 字形光標(常見於文字輸入)
"SizeVerCursor": Qt.SizeVerCursor, # 垂直調整大小
"SizeHorCursor": Qt.SizeHorCursor, # 水平調整大小
"SizeBDiagCursor": Qt.SizeBDiagCursor, # 右下/左上調整大小(對角)
"SizeFDiagCursor": Qt.SizeFDiagCursor, # 右上/左下調整大小(對角)
"SizeAllCursor": Qt.SizeAllCursor, # 全方位調整大小
"BlankCursor": Qt.BlankCursor, # 隱藏光標
"SplitVCursor": Qt.SplitVCursor, # 垂直分割光標
"SplitHCursor": Qt.SplitHCursor, # 水平分割光標
"PointingHandCursor": Qt.PointingHandCursor, # 手形光標(常見於超連結)
"ForbiddenCursor": Qt.ForbiddenCursor, # 禁止標誌光標(如禁止操作)
"OpenHandCursor": Qt.OpenHandCursor, # 開放的手形光標
"ClosedHandCursor": Qt.ClosedHandCursor, # 關閉的手形光標
"WhatsThisCursor": Qt.WhatsThisCursor, # 問號光標
"BusyCursor": Qt.BusyCursor # 忙碌光標(等待)
}

# 列出所有光標
for name, cursor_type in cursor_types.items():
print(f"{name}: {cursor_type}")



120會員
201內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
在 PyQt 的應用程式中,我們經常需要追蹤滑鼠位置,尤其是在建立繪圖工具或處理繪圖邊界的情況下。以下是如何檢測滑鼠在畫布內外狀態的教學,並包含滑鼠事件處理及邊界判斷的細節。 目標 監測滑鼠進入與離開畫布的狀態,當滑鼠進入畫布範圍內時啟動繪製,而當滑鼠超出範圍時記錄最後一個有效位置。 實現邊
進一步探討 PyQt5 的一些進階功能,具體包括如何使用更多的控件如 QComboBox(下拉框)、QTableWidget(表格),如何使用 QMainWindow 建立多窗口應用,及如何自訂樣式和設計。 1. 使用 QComboBox(下拉框) QComboBox 是一個下拉框控件,用來顯示
以下是一個關於 PyQt5 基礎教學的簡單入門文,帶你一步步了解如何從零開始建立 PyQt5 應用程序。 1. 安裝 PyQt5 首先,確保你安裝了 PyQt5 庫。打開終端或命令提示符,輸入以下命令進行安裝: pip install pyqt5 2. 建立最簡單的 PyQt5 應用程序
在 PyQt 的應用程式中,我們經常需要追蹤滑鼠位置,尤其是在建立繪圖工具或處理繪圖邊界的情況下。以下是如何檢測滑鼠在畫布內外狀態的教學,並包含滑鼠事件處理及邊界判斷的細節。 目標 監測滑鼠進入與離開畫布的狀態,當滑鼠進入畫布範圍內時啟動繪製,而當滑鼠超出範圍時記錄最後一個有效位置。 實現邊
進一步探討 PyQt5 的一些進階功能,具體包括如何使用更多的控件如 QComboBox(下拉框)、QTableWidget(表格),如何使用 QMainWindow 建立多窗口應用,及如何自訂樣式和設計。 1. 使用 QComboBox(下拉框) QComboBox 是一個下拉框控件,用來顯示
以下是一個關於 PyQt5 基礎教學的簡單入門文,帶你一步步了解如何從零開始建立 PyQt5 應用程序。 1. 安裝 PyQt5 首先,確保你安裝了 PyQt5 庫。打開終端或命令提示符,輸入以下命令進行安裝: pip install pyqt5 2. 建立最簡單的 PyQt5 應用程序
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
本章介紹了 CSS 中的顏色和背景屬性,包括文本顏色的設置方法、背景顏色和背景圖片的應用、背景重複和位置的配置,以及線性漸變和徑向漸變的使用。這些知識將幫助你更靈活地設計和美化網頁。
Thumbnail
在這篇文章中,我們將探討如何製作章節轉場動畫,讓您的作品更具吸引力。本文包含了準備素材、定義圖片、製作簡易動畫等步驟,適合初學者進行學習和操作。我們提供了必要的資源和範例,讓您能輕鬆上手。期待透過這篇教學,能讓您在創作中達到更高的境界!
Thumbnail
選擇一款適合自己的繪圖軟體是開始電繪的重要步驟。以下是幾款流行的數位繪圖軟體
Thumbnail
在某些特殊情況下,需要將圖片進行黑白反轉,例如Tesseract(OCR辨識引擎)就有建議黑底白字的狀況下辨識率較高。 本文將使用 NumPy 進行影像黑白反轉,並顯示反轉前後的影像。
這個系列的教學會列出基本上所有常見的造型和一些基礎 , 讓各位可以自行搭配造型~在這個第五篇呢 , 我們會來一起了解: 常見的按鈕樣式特性,怎麼使用他們,他們的作用是甚麼。讓我們一起了解如何自訂滑鼠以及使用常見的按鈕樣式特性,學會讓按鈕播放音效,切換滑鼠造型,以及避免圖片透明的地方被點擊到。
Thumbnail
這篇文章主要介紹了繪圖軟體中的色彩模式,包括RGB和CMYK的概念和用法。對於網路上使用和印刷的影像處理有很好的指導意義。
Thumbnail
這篇文章將介紹 Renpy 中常見的文字造型,包括抗鋸齒、加粗文字、控制文字顏色、文字字體、斜體、間距控制、製作文字外框、控制文字大小、畫線、文字方向等效果。並提供了建立文字造型的方法和應用範例。
Thumbnail
iOS15推出了新的按鈕外觀設定功能,讓設定變得更加直觀。使用不同的圓角設定和圖片位置可以輕鬆創建不同風格的按鈕。另外,新的選取效果變化功能也讓按鈕設計更加靈活。本文將介紹這些新功能的使用方法和效果。
Thumbnail
前篇測試如何把提示詞生成的圖像細節提高,這篇要測試的工作流是把任意圖像載入後經由放大模型放大,同時測試放大後重繪看看效果如何。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
本章介紹了 CSS 中的顏色和背景屬性,包括文本顏色的設置方法、背景顏色和背景圖片的應用、背景重複和位置的配置,以及線性漸變和徑向漸變的使用。這些知識將幫助你更靈活地設計和美化網頁。
Thumbnail
在這篇文章中,我們將探討如何製作章節轉場動畫,讓您的作品更具吸引力。本文包含了準備素材、定義圖片、製作簡易動畫等步驟,適合初學者進行學習和操作。我們提供了必要的資源和範例,讓您能輕鬆上手。期待透過這篇教學,能讓您在創作中達到更高的境界!
Thumbnail
選擇一款適合自己的繪圖軟體是開始電繪的重要步驟。以下是幾款流行的數位繪圖軟體
Thumbnail
在某些特殊情況下,需要將圖片進行黑白反轉,例如Tesseract(OCR辨識引擎)就有建議黑底白字的狀況下辨識率較高。 本文將使用 NumPy 進行影像黑白反轉,並顯示反轉前後的影像。
這個系列的教學會列出基本上所有常見的造型和一些基礎 , 讓各位可以自行搭配造型~在這個第五篇呢 , 我們會來一起了解: 常見的按鈕樣式特性,怎麼使用他們,他們的作用是甚麼。讓我們一起了解如何自訂滑鼠以及使用常見的按鈕樣式特性,學會讓按鈕播放音效,切換滑鼠造型,以及避免圖片透明的地方被點擊到。
Thumbnail
這篇文章主要介紹了繪圖軟體中的色彩模式,包括RGB和CMYK的概念和用法。對於網路上使用和印刷的影像處理有很好的指導意義。
Thumbnail
這篇文章將介紹 Renpy 中常見的文字造型,包括抗鋸齒、加粗文字、控制文字顏色、文字字體、斜體、間距控制、製作文字外框、控制文字大小、畫線、文字方向等效果。並提供了建立文字造型的方法和應用範例。
Thumbnail
iOS15推出了新的按鈕外觀設定功能,讓設定變得更加直觀。使用不同的圓角設定和圖片位置可以輕鬆創建不同風格的按鈕。另外,新的選取效果變化功能也讓按鈕設計更加靈活。本文將介紹這些新功能的使用方法和效果。
Thumbnail
前篇測試如何把提示詞生成的圖像細節提高,這篇要測試的工作流是把任意圖像載入後經由放大模型放大,同時測試放大後重繪看看效果如何。