Qt Window-QWidget

基礎窗口控件QWidget是所有用戶界面對象的基類,所有的窗口和控件都直接或間接的繼承QWidget

窗口座標系統

1.屏幕座標系統:以屏幕左上角爲座標原點,從左到右爲x軸正向,從上到下爲y軸正向,用來定位頂層窗口
2.窗口內部座標系統:座標原點爲窗口左上角,原點,x軸,y軸圍成的區域叫做Client Area(客戶區),客戶區周圍的是標題欄與邊框
在這裏插入圖片描述
具體操作函數如下

  1. QWidget 直接提供的成員函數:x(),y()獲取窗口左上角的座標,width(),height()獲取客戶區的高度和寬度
  2. QWidget中的geometry()提供的成員函數:x(),y()獲取客戶區左上角的座標,width(),height()獲取客戶區的高度和寬度
  3. QWidget中的frameGeometry()提供的成員函數:x(),y()獲取窗口左上角的座標,width(),height()獲取整個窗口(包含客戶區,標題欄和邊框)的高度和寬度

一些常見函數

import sys
from PyQt5.QtWidgets import QApplication , QMainWindow,QWidget
from functiontest import Ui_Form
class MyMainWindow(QMainWindow,Ui_Form):
    def __init__(self, parent=None):
        super(MyMainWindow,self).__init__(parent)
        self.setupUi(self)
        self.getClient()

    #客戶區操作
    def getClient(self):
        a=self.size()#獲取客戶區大小
        x=self.width()#獲取客戶區寬度
        y=self.height()#獲取客戶區高度
        print("大小:"+str(a)+" 寬度:"+str(x)+" 高度: "+str(y))

    def changeClient(self,x,y,width,height):
        self.resize(width,heighet)#改變客戶區寬度和高度
        self.setFixedHeight(height)#寬度固定,只可改變高度
        self.setFixedWidth(width)#高度固定,只可改變寬度
        self.setGeometry(x,y,width,height)#改變客戶區的位置和大小,不可單獨設置x,y,座標
        #self.setGeometry(Qrect rect)
        self.getClient()

    #整個窗口的操作
    def Window(self,x,y):
        self.frameGeometry()#獲得整個窗口的大小和位置
        self.move(x,y)#設置窗口的位置
        #self.move(QPoint point)
        self.pos()#獲得窗口左上角的座標
        print(self.frameGeometry())

if __name__=="__main__":
    app = QApplication(sys.argv)
    myWin = MyMainWindow()
    #myWin.changeClient(200,300,400,600)
    myWin.Window(400,300)
    myWin.show()
    sys.exit(app.exec_())

pyqt5實例

面向過程建立一個窗口

# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import QApplication , QMainWindow,QWidget

app=QApplication(sys.argv)
window=QWidget()
window.resize(300,200)
window.move(250,150)
window.setWindowTitle('hello')
window.show()
sys.exit(app.exec_())

解釋:

  1. -- coding: UTF-8 -- 這裏是爲了解決中文會出現的亂碼問題,utf-8又稱爲萬國碼。使用該方案可以幫助其他語言的正常顯示。

  2. app=QApplication(sys.argv),每一個pyqt5程序都需要一個QApplication對象,sys.argv,s是一個命令行參數列表。python腳本可以從shell中執行,比如單擊.py腳本文件,通過命令行選擇執行腳本的方式
  3. Qwidget控件是所有用戶界面的基類,此處並沒有繼承其他類,通常把沒有父類的控件稱爲窗口。當控件被當作窗口處理時,setWindowTitle,與setWindowIcon會生效
  4. window.show():將窗口控件顯示在屏幕上
  5. sys.exit(app.exec_())最後進入主循環,事件處理從本行代碼開始,主循環接受信息並將其分發給程序的幾個控件。如果調用exit(),h或主控件被銷燬,主循環就會結束,sys.exit()方法可以確保程序完整的結束

面向對象建立一個窗口,併爲應用程序設置一個圖標

# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import QApplication , QMainWindow,QWidget
from PyQt5.QtGui import QIcon

class Icon(QWidget):
    def __init__(self,parent=None):
        super(Icon,self).__init__(parent)
        self.initUI()
    def initUI(self):
        self.setGeometry(300,300,700,900)
        self.setWindowTitle('程序')
        self.setWindowIcon(QIcon('./cartoon1.ico'))

if __name__=='__main__':
    app=QApplication(sys.argv)
    icon=Icon()
    icon.show()
    sys.exit(app.exec_())

我們一般使用setWindowIcon()方法來設置程序座標,需要一個QIcon類型的對象作爲參數,在使用QIcon類構造函數時 ,需要提供圖標路徑。(區分之間文章中窗口內部加載圖像的方法)

顯示氣泡提示
對於一些操作,相關信息的提示就顯得非常有用,因此我們需要在這些地方添加氣泡提示。

# -*- coding: UTF-8 -*-
import sys
from PyQt5.QtWidgets import QApplication , QToolTip,QWidget
from PyQt5.QtGui import QFont,QIcon

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

    def initUI(self):
        QToolTip.setFont(QFont('華文中宋', 10))#設置氣泡的字體和大小,可不加
        self.setToolTip('這是一個<b>氣泡提示</b>')#設置氣泡提示
        self.setGeometry(200,300,400,400)
        self.setWindowTitle('氣泡提示')
        self.setWindowIcon(QIcon('./cartoon1.ico'))

if __name__=='__main__':
    app=QApplication(sys.argv)
    win=Winform()
    win.show()
    sys.exit(app.exec_())

qt支持的字體

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章