1. 程式人生 > 程式設計 >python GUI庫圖形介面開發之PyQt5視窗控制元件QWidget詳細使用方法

python GUI庫圖形介面開發之PyQt5視窗控制元件QWidget詳細使用方法

QWidget基本介紹

基礎視窗控制元件QWidget類是所有使用者介面物件的基類,所有的視窗或者控制元件都直接或者間接的繼承自QWidget類。

視窗座標系統

PyQt使用統一的座標系統來定位視窗控制元件的位置和大小,具體如下

python GUI庫圖形介面開發之PyQt5視窗控制元件QWidget詳細使用方法

以螢幕左上角為原點,也就是(0,0)點,從左向右為x軸正方向,從上向下為y軸正方向,整個螢幕的座標系統用來定位頂層視窗。

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

python GUI庫圖形介面開發之PyQt5視窗控制元件QWidget詳細使用方法

從上圖中,可以將這些成員函式分成三類:

  1. QWidget直接提供的成員函式,x(),y()獲得整個視窗左上角的座標,width()和height()返回客戶區的寬度和高度。
  2. QWidget的geometry()提供的成員函式,x(),y()返回的是客戶區左上角座標,width(),height()返回客戶區寬度和高度。
  3. QWidget的frameGeometry()提供的成員函式,x(),y()返回的是整個視窗左上角的座標,-width(),height()也是整個對話方塊的寬度和高度,包括標題欄和邊框。

從上圖可以看出來,QWidget有兩種常見的幾何結構

不包含外面各種邊框的幾何結構(客戶區)。

包含各種邊框的幾何結構。

不包含邊框常用函式

改變客戶區面積

QWidget.resize(width,height)

獲取客戶區大小

QWidget.size()

獲取客戶區的寬度和高度

QWidget.width()

QWidget.height()

設定客戶區的寬度和高度(在某些維度上值不可改變)

QWidget.setFixedWidth(int width)

QWidget.setFixedHeight(int height)

QWidget.setFixedSize(int width,int height)

設定視窗的位置(值可以改變)

QWidget.setGeometry(int x,int y,int width,int height)

包含邊框常用函式

獲取視窗的大小和位置

QWidget.frameGeometry()

設定視窗的位置

QWidget.move(int x,int y)

獲取視窗左上角座標

QWidget.pos()

螢幕座標系統例項

from PyQt5.QtWidgets import QApplication,QMainWindow,QWidget,QPushButton
import sys

app=QApplication(sys.argv)
#視窗
widget=QWidget()
#按鈕繼承在視窗中,並例項化
btn=QPushButton(widget)
#按鈕命名
btn.setText('button')

#以QWdiget左上角為(0,0)點,按鈕移動到座標處
btn.move(20,20)
#不同的作業系統可能對視窗的最小寬度有規定,若設定寬度小於規定值,則會以規定值進行顯示
widget.resize(300,200)
#以螢幕左上角為(0,0)的點,視窗移動到指定座標處
widget.move(250,200)


widget.setWindowTitle('pyqt座標系統例子')
widget.show()

#輸出視窗的rect(x,y,width,height)
print('QWidget:')
#x,y獲取視窗左上角的座標
print('w.x()=%d' %widget.x())
print('w.y()=%d' %widget.y())
#width,height獲取客戶區的寬度與高度
print('w.width()=%d' %widget.width())
print('w.height()=%d' %widget.height())
#客戶區的大小
print('客戶區的大小:%d' %widget.size())


print('QWidget.geometry')
#x,y獲取客戶區的左上角座標(包含視窗的標題與邊框部分)
print('widget.geometry().x()=%d' %widget.geometry().x())
print('widget.geometry().y()=%d' %widget.geometry().y())
#width,height獲取客戶區的寬度與高度
print('widget.geometry().width()=%d' %widget.geometry().width())
print('widget.geometry().height()=%d' %widget.geometry().height())



sys.exit(app.exec_())

效果如下圖:輸出客戶區的相關屬性

python GUI庫圖形介面開發之PyQt5視窗控制元件QWidget詳細使用方法

設定程式圖示例項

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QWidget,QApplication


#創造一個名為Icon的視窗類,繼承自Qwidget
class Icon(QWidget):
  def __init__(self,parent=None):
    super(Icon,self).__init__(parent)
    self.initUI()
  #初始化視窗
  def initUI(self):
    #設定視窗在螢幕中的位置與視窗的大小
    self.setGeometry(300,300,250,150)
    self.setWindowTitle('程式圖示')
    #設定視窗圖示,需要提供圖示的路徑
    self.setWindowIcon(QIcon('E:\pyqt5快速開發與實戰\第四章\images\cartoon1.ico'))
if __name__ == '__main__':
  app=QApplication(sys.argv)
  icon=Icon()
  icon.show()
  sys.exit(app.exec_())

效果如下:實現了程式左上角圖示的載入

python GUI庫圖形介面開發之PyQt5視窗控制元件QWidget詳細使用方法

顯示氣泡提示資訊例項

import sys
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QWidget,QApplication,QToolTip

class WinForm(QWidget):
  def __init__(self,parent=None):
    super(WinForm,self).__init__(parent)
    self.initUI()

  def initUI(self):
    #設定氣泡提示資訊的字型和大小
    QToolTip.setFont(QFont('SansSerif',10))
    #設定氣泡提示
    self.setToolTip('這是一個氣泡顯示')
    self.setGeometry(200,400,400)
    self.setWindowTitle('氣泡提示demo')
if __name__ == '__main__':
  app=QApplication(sys.argv)
  win=WinForm()
  win.show()
  sys.exit(app.exec_())

本文詳細介紹了PyQt5視窗控制元件QWidget詳細使用方法,要了解更多關於這方面的知識請檢視下面的相關連結