Pyqt5之基礎操作—1

簡介

本文介紹了部分Pyqt5開發GUI的基礎操作,適合有一定基礎的朋友閱讀,如果您想學習Pyqt圖形界面開發,請 點擊這裏。.
由於本人能力有限,如文章有不足之處歡迎留言指正。

常用weight

名稱 簡述 使用方法
MainWindow 主窗口,可以承載menuBar、statusBar和其他Widget class(MainWindow)
QLabel 標籤,起提示作用,可設置信號槽 label_1 = QLabel(‘我是標籤’)
QLineEdit 單行文本輸入框 lineEdit_1=QLineEdit()
QTextEdit 多行文本輸入框 textEdit_1 = QTextEdit()
Button 按鈕,通常和方法綁定,當點擊時可執行對應方法 QLineEdit()
QComboBox 菜單欄 comboBox_1 = QComboBox()

基本格式

# 這些模塊建議根據需求使用from *** import ***的形式,因爲打包之後程序會很大
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Window(QMainWindow):
    def __init__(self):
        super(Window,self).__init__()
        self.setupUi()

    def setupUi(self):
    	self.setWindowTitle('一個小GUI')  # 設置窗口標題
        self.resize(769, 336)  # 設置窗口大小
if __name__ == '__main__':
    app = QApplication(sys.argv)    # 創建程序
    window = Window()   # 創建窗口實例
    window.show()   # 顯示窗口
    sys.exit(app.exec_())   # 安全退出

注意:爲做到博客簡潔,以下代碼均放在Window類的setupUi方法下

爲部件設置大小和位置

# 方法一
        self.button1 = QPushButton('我是一個小按鈕', self)  #注意,不要丟掉self參數,否則屏幕不會顯示按鈕
        self.button1.setGeometry(200, 100, 50, 100)  # 座標爲x=200,y=100,width=50,height=100
# 方法二
		self.button1 = QPushButton('我是一個小按鈕', self)
		self.button1.move(200,100)  # 座標爲x=200,y=100
		self.button1.resize(50, 100)  # width=50,height=100

爲按鈕添加單擊事件

# 單個按鈕
        self.button1 = QPushButton('我是一個小按鈕', self)
        self.button1.setGeometry(200, 100, 50, 100)
        self.button1.clicked.connect(onClick_Button)  # 點擊時會調用onClick_Button這個方法
	def onClick_Button(self):
		print("我被點擊了")
		
# 多個按鈕,可以選擇一個按鈕關聯一個函數的方式,也可以通過判斷按鈕名稱的方式來完成
        self.button1 = QPushButton('我是一個按鈕A', self)
        self.button1.setGeometry(200, 100, 50, 100)
        self.button1.clicked.connect(lambda:self.onClick_Button(self.button1))  # button1是函數的實參
        self.button2 = QPushButton('我是一個按鈕B', self)
        self.button2.setGeometry(300, 100, 50, 100)
        self.button2.clicked.connect(lambda:self.onClick_Button(self.button2))  # button2是函數的實參
	def onClick_Button(self,button):  # button是傳入的按鈕名稱
		buttton_name=button.text()
		if buttton_name=='button1':
			print("button1被按下了")
		else:
			print("button2被按下了")

設置菜單選項

        self.comboBox1 = QComboBox(self)  # 實例化對象,創建一個菜單欄
        self.comboBox1.setGeometry(110,40,50,20)  # 設置位置和大小
        self.comboBox1.setObjectName("第一個菜單欄")  # 起一個方便記的名字
        self.comboBox1.addItems(["選項一","選項二","選項三"])  # 爲菜單添加選項
        '''
        或者是使用addItem方法(少了個s):
        self.comboBox1.addItem("選項一")
        self.comboBox1.addItem("選項二")
        self.comboBox1.addItem("選項三")
        '''

給佈局添加位置大小和部件

        self.groupBox1 = QGroupBox(self)  # 實例化對象
        self.groupBox1.setGeometry(200, 100, 141, 131)  # 設置位置和大小
        self.groupBox1.setObjectName("關於Y軸的")  # 添加一個方便自己辨別的名字
        self.groupBox1.setTitle("Y軸")  # 設置標題
        self.label1=QLabel("起始")
        ##########以上代碼是爲了實現佈局的嵌套,當只有佈局不需要嵌套則可以不寫上述代碼和下一行代碼的groupBox1參數##########
        self.mainLayout = QGridLayout(self.groupBox1)  # 使用柵格化佈局,groupBox1是創建的對象,當參數只有self時,默認在主窗口放置
        # self.mainLayout.setGeometry(150, 50, 50, 50)  # 設置位置和大小
        self.mainLayout.addWidget(self.label1, 0, 0,alignment=Qt.AlignCenter)  # 在第一行第一列放置,對齊方式爲水平居中對齊

補充:對齊方式Qt.Alignment可能取值有

名稱 對齊方式
Qt.AlignLeft 水平居左對齊
Qt.AlignRight 水平居右對齊
Qt.AlignCenter 水平居中對齊
Qt.AlignJustify 水平兩端對齊
Qt.AlignTop 垂直靠上對齊
Qt.AlignBottom 垂直靠下對齊
Qt.AlignVCenter 垂直居中對齊

好啦,沒事了

創建一個簡單的水平佈局

import sys
# QToolTip是提示信息的
from PyQt5.QtWidgets import QHBoxLayout,QMainWindow,QApplication,QToolTip,QPushButton,QWidget
from PyQt5.QtGui import QFont

class TooltipForm(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.button1 = QPushButton('我的按鈕')
        layout = QHBoxLayout()  # 創建一個水平佈局
        layout.addWidget(self.button1)  # 將button部件添加到水平佈局中
		self.setLayout(layout)
		####上述代碼已達到目的####

		##下面的代碼是介紹怎樣創建一個frame,不感興趣可以不用看##
        mainFrame = QWidget()  # 在主窗口上再創建一個小窗口
        mainFrame.setLayout(layout)  # 將水平佈局放到小窗口上
        self.setCentralWidget(mainFrame)  # 將小窗口放置到主窗口上

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

爲部件創建提示信息

import sys
# QToolTip是提示信息的
from PyQt5.QtWidgets import QHBoxLayout,QMainWindow,QApplication,QToolTip,QPushButton,QWidget
from PyQt5.QtGui import QFont

class TooltipForm(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        QToolTip.setFont(QFont('Simsun',12))#設置提示信息的字體
        QToolTip.setFont(QFont('Simsun',12))  # 設置提示信息的字體
        self.setGeometry(300,30,200,300)  # 設置窗口的位置和大小
        self.setWindowTitle('設置控件提示消息')  # 設置窗口的標題
		self.setToolTip('今天是星期五')  # 把鼠標放到界面停留一會  就會顯示提示信息
        # 支持html語法,也可以寫成:self.setToolTip('今天是<b>星期五</b>')

        self.button1 = QPushButton('我的按鈕')
        self.button1.setToolTip('這是一個按鈕,Are you ok?')
        layout = QHBoxLayout()
        layout.addWidget(self.button1)

        mainFrame = QWidget()
        mainFrame.setLayout(layout)
        self.setCentralWidget(mainFrame)

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

設置窗口圖標和應用程序圖標

窗口圖標是打開GUI之後,左上角的圖標,Mac系統沒有這個屬性
應用圖標是打開GUI之後,下面任務欄的圖標

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

class IconForm(QMainWindow):
    def __init__(self):
        super(IconForm,self).__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300,300,250,250)
        self.setWindowTitle('設置窗口圖標')  # 設置主窗口的標題
        self.setWindowIcon(QIcon('./images/Basilisk.ico'))  # 設置窗口圖標,參數是圖片地址

if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon('./images/Dragon.ico'))  # 設置應用程序圖標,參數是圖片地址
    main = IconForm()
    main.show()
    sys.exit(app.exec_())
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章