一、常用API
1、大小與位置:
x():相對於父控件的位置,頂層控件(沒有父控件)則相對於桌面的x位置
y():相對於父控件的y位置,頂層控件(沒有父控件)則相對於桌面的y位置
pos():x和y的組合 QPoint(x, y)
width():控件的寬度,不包含任何窗口框架
height():控件的高度,不包含任何窗口框架
size():width和height的組合 ,QSize(width, height)
geometry():用戶區域相對於父控件的位置和尺寸組合 QRect(x, y, width, height)
rect():0, 0, width, height的組合 QRect(0, 0, width, height)
frameSize():框架大小
frameGeometry():框架尺寸
move(x, y):操控的是x, y;也就是pos 包括窗口框架
resize(width, height):操控的是寬高 不包括窗口框架
setGeometry(x_noFrame, y_noFrame, width, height):
adjustSize():根據內容自適應大小
setFixedSize():設置固定尺寸
2、最大和最小尺寸:
minimumWidth():最小尺寸的寬度
minimumHeight():最小尺寸的高度
minimumSize():最小尺寸
maximumWidth():最大尺寸的寬度
maximumHeight():最大尺寸的高度
maximumSize():最大尺寸
setMaximumWidth():
setMaximumHeight():
setMinimumWidth():
setMinimumHeight():
setMinimumSize()
3、設置內容邊距:
setContentsMargins(左, 上, 右, 下)
getContentsMargins():獲取內容邊距
contentsRect():獲取內容區域
4、鼠標相關:
setCursor():設置鼠標形狀
unsetCursor():重置鼠標
cursor() -> QCursor:獲取鼠標
hasMouseTracking():判定是否設置了鼠標跟蹤
setMouseTracking(bool):設置鼠標是否跟蹤 。所謂的鼠標跟蹤,其實就是設置檢測鼠標移動事件的條件
5、事件相關:
showEvent(QShowEvent):控件顯示時調用
closeEvent(QCloseEvent):控件關閉時調用
moveEvent(QMoveEvent):控件移動時調用
resizeEvent(QResizeEvent):控件調整大小時調用
enterEvent(QEvent):鼠標進入時觸發
leaveEvent(QEvent):鼠標離開時觸發
mousePressEvent(QMouseEvent):
mouseReleaseEvent(QMouseEvent):
mouseDoubleClickEvent(QMouseEvent)
mouseMoveEvent(QMouseEvent):鼠標按下后移動時觸發
keyPressEvent(QKeyEvent):鍵盤按下時調用
keyReleaseEvent(QKeyEvent):
focusInEvent(QFocusEvent):獲取焦點時調用
focusOutEvent(QFocusEvent):失去焦點時調用
dragEnterEvent(QDragEnterEvent):拖拽進入控件時調用
dragLeaveEvent(QDragLeaveEvent):拖拽離開控件時調用
dragMoveEvent(QDragMoveEvent):拖拽在控件內移動時調用
dropEvent(QDropEvent):拖拽放下時調用
paintEvent(QPaintEvent):顯示控件, 更新控件時調用
changeEvent(QEvent):窗體改變, 字體改變時調用
contextMenuEvent(QContextMenuEvent):訪問右鍵菜單時調用
inputMethodEvent(QInputMethodEvent):輸入法調用
6、父子關系:
childAt(x, y):獲取在指定坐標的控件。(根據當前點擊的坐標獲取子控件)
parentWidget():獲取指定控件的父控件
childrenRect():所有子控件組成的邊界矩形
from PyQt5.Qt import * import sys class Window(QWidget): def mousePressEvent(self, evt): click_x = evt.x() click_y = evt.y() # 根據當前點擊的坐標獲取子控件 child = self.childAt(click_x, click_y) if child is not None: child.setStyleSheet('background-color: green') if __name__ == '__main__': app = QApplication(sys.argv) window = Window() window.setWindowTitle('QWidget') window.resize(500, 400) label1 = QLabel(window) label1.setText('label1') label2 = QLabel(window) label2.setText('label2') label2.move(100, 100) window.show() sys.exit(app.exec_())
7、層級控制:注意:以下操作專指同級控件
lower():將控件降低到最底層
raise下划線():將控件提升到最上層
a.stackUnder(b):讓a放在b下面
from PyQt5.Qt import * import sys class Label(QLabel): def mousePressEvent(self, evt): # 將控件提升到最上層 self.raise_() if __name__ == '__main__': app = QApplication(sys.argv) window = QWidget() window.setWindowTitle('層級關系調整') window.resize(500, 500) label1 = Label(window) label1.setText('QLabel1') label1.resize(200, 200) label1.setStyleSheet('background-color: red') label2 = Label(window) label2.setText('QLabel2') label2.resize(200, 200) label2.setStyleSheet('background-color: green') label2.move(100, 100) window.show() sys.exit(app.exec_())
8、頂層窗口相關:
setWindowIcon(QIcon("resource/header_icon.png")):
windowIcon():
setWindowTitle("社會我順哥"):
windowTitle():
setWindowOpacity(float):不透明度
windowOpacity():
setWindowState(state):設置窗口的狀態
showFullScreen():
showMaximized():
showNormal():正常
isMinimized():是否是最小化窗口
isMaximized():是否是最大化窗口
isFullScreen():是否全屏
window.setWindowFlags(Qt.WindowStaysOnTopHint):窗口樣式
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super().__init__() def mousePressEvent(self, evt): # 判斷窗口是否最大化 if self.isMaximized(): # 設置最小化 self.showNormal() else: # 設置最大化 self.showMaximized() if __name__ == '__main__': app = QApplication(sys.argv) window = Window() window.setWindowTitle('QWidget-窗口相關的操作') window.show() sys.exit(app.exec_())
9、交互狀態:
setEnabled(bool):設置控件是否禁用
isEnabled():獲取控件是否可用
setVisible(bool):
isHidden():
isVisible():
isVisibleTo(widget):
setWindowModified(bool):是否編輯
isWindowModified():
isActiveWindow():是否為活躍窗口
close():
from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle('QWidget-交互狀態') self.setGeometry(0,0, 500, 400) self.setup_ui() def setup_ui(self): edit = QLineEdit(self) btn = QPushButton(self) btn.setText('按鈕') btn.setDisabled(True) btn.move(0,100) def change(text): btn.setDisabled((not len(text) > 0)) edit.textChanged.connect(change) if __name__ == '__main__': app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
10、信息提示:
statusTip():狀態提示
setStatusTip(str):
toolTip():工具提示
setToolTip(str):
setWhatsThis(str):這是啥提示
whatsThis():
11、焦點控制:
setFocus():指定控件獲取焦點
setFocusPolicy(Policy):設置焦點獲取策略
Qt.TabFocus:通過Tab鍵獲得焦點
Qt.ClickFocus:通過被單擊獲得焦點
Qt.StrongFocus:可通過上面兩種方式獲得焦點
Qt.NoFocus:不能通過上兩種方式獲得焦點(默認值),setFocus仍可使其獲得焦點
clearFocus():取消焦點
12、不太重要的方法:
setAttribute(Qt :: WidgetAttribute 屬性,bool on = true):屬性
QWidget :: mask()const:遮罩 返回當前在小部件上設置的遮罩。如果沒有設置掩碼,返回值將是一個空白區域。
13、信號:
windowTitleChanged(QString):窗口標題改變信號
windowIconChanged(QIcon):窗口圖標改變信號
customContextMenuRequested(QPoint):自定義上下文菜單請求信號
