實戰PyQt5 004 控制項之祖QWidget

2021-10-10 11:56:03 字數 2426 閱讀 7746

pyqt是python圖形使用者介面(graphical user inte***ce, 簡稱gui)應用開發中流行的圖形開發介面庫。

在gui應用中,乙個典型的視窗座標系統如圖1所示:

gui視窗座標示意圖

螢幕左上角為座標原點,即(0,0)點,從左到右為x軸正向,從上到下為y軸正向。整個螢幕的座標系統就用頂層視窗的座標系統。

在視窗內部也有自己的座標系統,該座標系統以客戶區的左上角為原點,從左向右為x軸正方向,從上到下為y軸正方向,在客戶區周圍有標題欄和邊框。

在pyqt中,每個gui控制項稱之為小部件(widget)。所有的gui控制項都直接或者間接從qwidget繼承而來,可以通俗地看成,qwidget為所有gui部件的祖先,其他gui部件都是qwidget的子孫。

qwidget繼承自qobject,因此所有繼承自qwidget所有的小部件(widget)都支援訊號和槽機制。qwidget類實現了乙個gui控制項所必須的一些屬性和功能。乙個gui控制項具有以下一些屬性和功能:

每個控制項都是矩形的,它們按照z軸順序排序(垂直於桌面),在相同位置,前面的控制項如果在可視狀態,則會覆蓋後面的控制項,其常見特性包括:

注: 為了敘述方便,在以後的文字中, 不區分控制項和部件的稱呼差異,二者表示同一含義。

qwidget視窗基本元素如下圖所示:

qwidget控制項視窗示意圖

qwidget的常用控制視窗大小和位置的方法有:

qwidget其他一些常用方法:

注:客戶區指的是不包含邊框的部分,客戶區加邊框一般稱作視窗區。

qtwidget類繼承關係:

建立檔案qwidget.py, 改變視窗的位置和大小,並列印到終端視窗中。**如下:

import sys

from pyqt5.qtcore import qsize

if __name__ == '__main__':

wid = qwidget()

wid.setwindowtitle('實戰pyqt5: qwidget demo!')

wid.resize(400, 280)

wid.show()

#在終端視窗中輸出一些資料資訊

print('qwidget:')

#x,y獲取視窗左上角的座標

print('widget.x()=%d' %wid.x())

print('widget.y()=%d' %wid.y())

#width, height獲取客戶區的寬度與高度

print('widget.width()=%d' %wid.width())

print('widget.height()=%d' %wid.height())   

print('')

print('qwidget.geometry')

print("widget.geometry().x() = %d " %wid.geometry().x())

print("widget.geometry().y() = %d " %wid.geometry().y())

print("widget.geometry().width() = %d " %wid.geometry().width())

print("widget.geometry().height() = %d " %wid.geometry().height())

print('')

print('qwidget.framegeometry')

print("widget.framegeometry().x() = %d " %wid.framegeometry().x())

print("widget.framegeometry().y() = %d " %wid.framegeometry().y())

print("widget.framegeometry().width() = %d " %wid.framegeometry().width())

print("widget.framegeometry().height() = %d " %wid.framegeometry().height())

測試結果如下圖所示:

qwidget視窗引數測試

前一篇:實戰pyqt5: 003-pyqt的訊號和槽機制簡介

實戰PyQt5 041 選單控制項QMenu

在乙個gui應用中,選單項都是乙個隨處都會用到的乙個控制項項。在乙個應用中選單常以以下三種方式出現 qmenu常用方法有 qmenu類繼承關係 在前一篇文章中,演示了使用qmenubar為主視窗提供選單欄的方法,在本篇中,我們進一步完善主視窗選單。import sys from pyqt5 impo...

pyqt介面控制項

建立主介面的兩種方法 1.通過繼承qtgui.qmainwindow建立類 qtgui.qmainwindow.init self 呼叫父類初始化方法 2.通過繼承qtgui.qwidget建立類 qtgui.qwidget.init self 呼叫父類初始化方法 qpushbutton 按鈕 se...

pyqt 實現控制項移除 pyqt刪除控制項的坑

最近在使用pyqt寫個專案,在remove控制項後,使用findchild仍然能找到控制項,除錯很久,才發現是pyqt的深坑.很無奈 這裡是關閉qtabwidget的標籤 def close tab self,index 1 if index 1 index self.tab widget.curr...