PyQt5基礎控件


QLabel標簽

功能:在界面上顯示文字、圖片、鏈接等

接口:

方法 描述
setText() 設置顯示的內容
setAlignment() 設置文字對齊方式
setToolTip() 設置提示信息
setPixmap() 設置顯示內容為圖片
setOpenExternalLinks() 允許訪問鏈接,打開瀏覽器,默認非使能

信號:

信號 描述
linkActivated 點擊標簽中的超鏈接,且setOpenExternalLinks為true時觸發
linkHovered 當鼠標滑過標簽中的超鏈接時觸發

QLineEdit

功能:單行文本輸入框

接口:

方法 描述
setAlignment() 設置內容對齊方式
clear() 清空
setPlaceholderText() 顯示默認內容
setMaxLength() 設置運行輸入的最大長度
setReadOnly() 設置內容只讀
setText() 設置文本框內容
Text() 返回文本框內容
selectAll() 全選
setFocus() 獲取焦點
setEchoMode()

設置顯示的內容格式:

QLineEdit.Normal:正常顯示所有字符,默認選項

QLineEdit.NoEcho:不顯示任何字符

QLineEdit.Password:顯示與平台相關的掩碼字符,不顯示實際輸入內容

QLineEdit.PasswordEchoOnEdit:在編輯時顯示字符

setInputMask() 設置掩碼
setValidator()

設置允許輸入的內容:

QIntValidator:限制輸入整型

QDoubleValidator:限制輸入浮點數

QRegexpValidator:限制輸入符合正則表達式

信號:

信號 描述
selectionChanged 選中的內容改變時觸發
textChanged 修改文本內容時觸發
editingFinished 文本編輯結束時觸發

QTextEdit

功能:顯示多行文本、html文檔

接口:

方法 描述
setPlainText() 設置多行文本框內容
toPlainText() 返回多行文本框內容
setHtml() 設置內容為html文檔
toHtml() 返回多行文本框內容
clear() 清空

信號:與單行文本框類似

QAbstractButton

功能:按鈕的公共基礎類,不能直接實例化,主要提供按鈕的通用功能

狀態:按鈕具有幾種狀態,可以相互切換

狀態 含義
isDown() 按鈕是否被按下
isChecked() 按鈕是否被標記
isEnable() 按鈕是否可以被用戶點擊
isCheckAble() 按鈕是否可被標記
setAutoRepeat() 按鈕在用戶長按時,是否可以自動重復執行

 信號:

信號 描述
Pressed 按鈕被按下時觸發
Released 按鈕被彈起時觸發
Clicked 按鈕被按下且彈起時觸發
Toggled 按鈕標記狀態改變時觸發

QPushButton

功能:單擊按鈕

接口:

方法 描述
setCheckable() 設置按鈕是否被選中。true或false。
toggle() 在按鈕狀態之間切換
setIcon() 設置按鈕圖標
setEnable() 設置按鈕是否可用。true或false。
isChecked() 返回按鈕的選中狀態
setText() 設置按鈕顯示文本
text() 獲取顯示文本

QRadioButton

功能:單選按鈕,提供多選一的功能

說明:繼承之同一個父類的單選按鈕,默認多個單選按鈕屬於同一組;如果要實現多組,需要使用QGroupBox或QButtonGroup

接口:

方法 描述
setCheckAble() 設置按鈕是否被選中
isChecked() 返回按鈕的狀態
setText() 設置顯示文本
text() 返回顯示文本

QCheckBox

功能:復選框,提供多選多的功能

接口:

方法 描述
setChecked 設置復選框狀態
setText 設置顯示文本
text 返回顯示文本
isChecked 檢查復選框是否被選中

QComboBox

功能:下拉框

接口:

方法 描述
addItem() 添加一個下拉選項
addItems() 從列表中添加下拉選項
clear() 清空
count() 返回下拉選項的數目
currentText() 返回選中選項的文本
itemText(i) 獲取索引為i的選項文本
currentIndex() 返回選中的索引
setItemText(index, text) 設置索引i的內容為text

QSpinBox/QDoubleSpinBox

功能:計數器,允許用戶選中一個值(整型或浮點型)

接口:

方法 描述
setMinimum() 設置計數器的最小值
setMaximum() 設置計數器的最大值
setRange() 設置計數器的最大值、最小值以及步長
setValue() 設置計數器的當前值
Value() 獲取計數器的當前值
setSingleStep() 設置計數器步長

信號:

信號 描述
valueChanged 計數器值改變時觸發

QProgressBar

功能:進度條

接口:

方法 描述
setRange() 設置范圍
setMinimum() 設置下限
setMaximum() 設置上限
setValue() 設置進度條的值
reset() 進度條復位

QSlider

功能:滑動條,通過滑動的方式選擇值,比計數器更加方便自然

接口:

方法 描述
 setMinimum()  設置滑動條最小值
 setMaximum() 設置滑動條最大值 
 singleStep() 設置步長 
 setValue() 設置滑動條當前值 
Value() 獲取當前值
setTickInterval() 設置刻度間隔
setTickPosition()

設置刻度的樣式

QSlider.NoTicks:不繪制刻度

QSlider.TicksBothSides:在滑塊的兩側繪制刻度

QSlider.TicksAbove:在滑塊上方繪制刻度線

QSlider.TicksBelow:在滑塊下方繪制刻度線

QSlider.TicksLeft:在滑塊左側繪制刻度線

QSlider.TicksRight:在滑塊右側繪制刻度線

 信號:

信號 描述
valueChanged 當滑塊的值發生變化時觸發
sliderPressed 當滑塊被按下時觸發
sliderMoved 當滑塊被拖動時觸發
sliderReleased 當滑塊彈起時時觸發

 QCalendar

功能:日歷控件

接口:

方法 描述
setDateRange()  設置可供選擇的日期范圍
setFirstDayofWeek() 設置星期的第一天,默認是星期天 
setMinimumDate() 設置最大日期 
setMaxmumDate() 設置最小日期 
setSelectDate() 設置一個QData對象,作為當前日期空間所選定的日期 
maximumDate() 獲取最大日期 
minimumDate() 獲取最小日期
selectedData() 獲取當前選定的日期
setGridvisible() 設置容器空間是否顯示網格

 信號:

信號 描述
clicked(QtCore.QDate) 選定一個日期時觸發

QDateTimeEdit

功能:允許用戶編輯日期時間的控件,可以使用鍵盤和上下箭頭來增加和減少日期的時間值

接口:

方法 描述
setDisplayFormat()

設置日期時間格式:

yyyy:年

MM:月

dd:日

HH:小時

mm:分鍾

ss:秒

setMinimumDate() 設置最小日期
setMaxmumDate() 設置最大日期
time() 返回編輯的時間
date() 返回編輯的日期

信號:

信號 描述
dateChanged 日期改變時觸發
dateTimeChanged 日期或時間改變時都會觸發(優先)
timeChanged 時間改變時觸發

例子

 1.將QLineEdit輸入的內容顯示到QLabel上

import sys

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPalette
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit

class MyWidget(QWidget):
    def __init__(self):
        super(MyWidget, self).__init__()
        # 初始化label
        self.label = QLabel(self)
        self.label.resize(100, 20)
        self.label.move(10, 10)
        self.label.setAutoFillBackground(True)
        self.palette = QPalette()
        self.palette.setColor(QPalette.Window, Qt.green)
        self.label.setPalette(self.palette)
        # 初始化lineEdit
        self.lineEdit = QLineEdit(self)
        self.lineEdit.setPlaceholderText('please enter')
        self.lineEdit.resize(100, 20)
        self.lineEdit.move(10, 40)
        # 綁定textChanged到方法
        self.lineEdit.textChanged.connect(self.syncToLabel)

    # 將lineEdit輸入的內容顯示到標簽上
    def syncToLabel(self, msg):
        self.label.setText(msg)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.resize(500, 300)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()
    sys.exit(app.exec_())

2.多種按鈕

import sys

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QCheckBox, QRadioButton, QGroupBox, QVBoxLayout, \
    QHBoxLayout


class MyWidget(QWidget):
    def __init__(self):
        super(MyWidget, self).__init__()
        # button
        self.button = QPushButton(self)
        self.button.move(10, 10)
        self.button.setText('按鈕')
        self.button.clicked.connect(self.onButtonClicked)

        # radio
        self.radio1 = QRadioButton("Radio button 1")
        self.radio2 = QRadioButton("Radio button 2")
        self.radio3 = QRadioButton("Radio button 3")

        vbox = QVBoxLayout()
        vbox.addWidget(self.radio1)
        vbox.addWidget(self.radio2)
        vbox.addWidget(self.radio3)
        vbox.addStretch(1)

        radioGroup = QGroupBox(self)
        radioGroup.setLayout(vbox)
        radioGroup.move(10, 50)

        self.radio1.clicked.connect(self.onRadioClicked)
        self.radio2.clicked.connect(self.onRadioClicked)
        self.radio3.clicked.connect(self.onRadioClicked)

        # checkBox
        self.checkBox1 = QCheckBox("check box 1")
        self.checkBox2 = QCheckBox("check box 2")
        self.checkBox3 = QCheckBox("check box 3")

        hbox = QHBoxLayout()
        hbox.addWidget(self.checkBox1)
        hbox.addWidget(self.checkBox2)
        hbox.addWidget(self.checkBox3)
        hbox.addStretch(1)

        checkGroup = QGroupBox(self)
        checkGroup.setLayout(hbox)
        checkGroup.move(10, 150)

        self.checkBox1.stateChanged.connect(lambda: self.onCheckClicked(self.checkBox1))
        self.checkBox2.stateChanged.connect(lambda: self.onCheckClicked(self.checkBox2))
        self.checkBox3.stateChanged.connect(lambda: self.onCheckClicked(self.checkBox3))

    def onButtonClicked(self):
        print('button clicked')

    def onRadioClicked(self):
        print('radio clicked')
        if self.radio1.isChecked():
            print('radio1 checked')
        elif self.radio2.isChecked():
            print('radio2 checked')
        elif self.radio3.isChecked():
            print('radio3 checked')

    def onCheckClicked(self, checkBox):
        print('check clicked')
        print(checkBox.text())

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.resize(500, 300)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()
    sys.exit(app.exec_())

 3.通過點擊設置值

import sys

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication, QWidget, QComboBox, QSpinBox, QSlider


class MyWidget(QWidget):
    def __init__(self):
        super(MyWidget, self).__init__()
        # comboBox
        self.com = QComboBox(self)
        self.com.move(10, 10)
        self.com.addItem('one')
        self.com.addItem('two')
        self.com.addItem('three')
        self.com.currentIndexChanged.connect(self.onChange)

        # spinBox
        self.spin = QSpinBox(self)
        self.spin.resize(100, 30)
        self.spin.move(10, 50)
        self.spin.setRange(10, 50)
        self.spin.setSingleStep(2)
        self.spin.setValue(25)
        self.spin.valueChanged.connect(self.onSpinChange)

        # slider
        self.slider = QSlider(Qt.Horizontal)
        self.slider.setParent(self)
        self.slider.resize(300, 20)
        self.slider.move(10, 100)
        self.slider.setRange(50, 150)
        self.slider.setTickInterval(5)
        self.slider.setValue(50)
        self.slider.setTickPosition(QSlider.TicksBelow)
        self.slider.setFont(QFont('Arial', 18))
        self.slider.valueChanged.connect(self.onSliderChange)

    def onChange(self, index):
        print(self.com.itemText(index))

    def onSpinChange(self, value):
        print(value)

    def onSliderChange(self, value):
        print(value)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.resize(500, 300)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()
    sys.exit(app.exec_())

4.日期時間選擇

 

import sys
from PyQt5 import QtCore
from PyQt5.QtCore import QDate, Qt
from PyQt5.QtWidgets import QApplication, QWidget, QCalendarWidget, QDateTimeEdit

class MyWidget(QWidget):
    def __init__(self):
        super(MyWidget, self).__init__()

        # 日歷
        self.calendar = QCalendarWidget(self)
        self.calendar.setMinimumDate(QDate(1980, 1, 1))
        self.calendar.setMaximumDate(QDate(3000, 1, 1))
        self.calendar.setGridVisible(True)
        self.calendar.setFirstDayOfWeek(Qt.Monday)
        self.calendar.move(10, 10)
        self.calendar.clicked[QtCore.QDate].connect(self.showData)

        # dateTimeEdit
        self.dte = QDateTimeEdit(self)
        self.dte.setMaximumDate(QDate.currentDate().addDays(365))
        self.dte.setMinimumDate(QDate.currentDate().addDays(-365))
        self.dte.setDisplayFormat('yyyy-MM-dd HH:mm:ss')
        self.dte.move(10, 250)
        self.dte.dateChanged.connect(self.onDateChange)
        self.dte.timeChanged.connect(self.onTimeChange)
        self.dte.dateTimeChanged.connect(self.onDateTimeChange)

    def showData(self, date):
        print(date.toString("yyyy-MM-dd dddd"))

    def onDateChange(self, data):
        print("onDateChange: ")
        print(data)

    def onTimeChange(self, time):
        print("onTimeChange: ")
        print(time)

    def onDateTimeChange(self, dateTime):
        print("onDateTimeChange: ")
        print(dateTime)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWidget()
    w.resize(500, 300)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()
    sys.exit(app.exec_())

 

setRange


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM