一、数据的输入输出
类型 | 获得数据 | 输出数据 | 特点 |
---|---|---|---|
QlineEdit | .text() | .setText() | 输出输入都为字符串形式 |
QspinBox | .value() | .setvalue() | 专门用于输入输出整数,可以改变进制显示 |
QDoubleSpinBox | .value() | .setvalue() | 专门用于输入输出浮点数 |
案例:
class QmyDialog(QWidget):
def __init__(self,parent =None):
super().__init__(parent)
self.ui =Ui_Dialog()
self.ui.setupUi(self)
def on_pushButton_3_clicked(self):
num = (self.ui.spinBox.value())
price = (self.ui.doubleSpinBox.value())
total = num*price
self.ui.doubleSpinBox_2.setValue(total)
二:利用QPushButton
三:Qslider、QScrollBar和QProgressBar
案例:
class QmyDialog(QWidget):
def __init__(self,parent =None):
super().__init__(parent)
self.ui =Ui_Dialog()
self.ui.setupUi(self)
self.ui.horizontalSlider.setMaximum(200)
self.ui.horizontalSlider.TicksBothSides
self.ui.horizontalScrollBar.setMaximum(200)
self.ui.progressBar.setMaximum(200)
self.ui.horizontalSlider.valueChanged.connect(self.do_valueChanged)
self.ui.horizontalScrollBar.valueChanged.connect(self.do_valueChanged)
def do_valueChanged(self,value):
self.ui.progressBar.setValue(value)
四:日期时间数据
- 日期时间数据
案例:
import sys
from PyQt5.QtWidgets import QApplication, QWidget
#from PyQt5.QtCore import pyqtSlot
from PyQt5.QtCore import QDateTime, QDate,QTime
class QmyDialog(QWidget):
def __init__(self,parent =None):
super().__init__(parent)
self.ui =Ui_Dialog()
self.ui.setupUi(self)
def on_pushButton_clicked(self):
#获取当前日期时间得按钮
curDateTime =QDateTime.currentDateTime() #QDateTime.currentDateTime获取本机的时间
self.ui.timeEdit.setTime(curDateTime.time()) #获取时间
self.ui.lineEdit.setText(curDateTime.toString ("hh:mm:ss") )
self.ui.dateEdit.setDate(curDateTime.date () ) #获取日期
self.ui.lineEdit_2.setText(curDateTime.toString ("yyyy-MM-dd"))
self.ui.dateTimeEdit.setDateTime (curDateTime) #获取时间和日期
self.ui.lineEdit_3.setText (curDateTime.toString ("yyyy-MM-dd hh:mm:ss"))
def on_calendarWidget_selectionChanged(self):
#日历的组件
date =self.ui.calendarWidget.selectedDate()
print()
self.ui.lineEdit_4 .setText (date.toString("yyyy年M月d日"))
def on_pushButton_2_clicked(self) :
##"设置时间”按钮
tmStr=self.ui.lineEdit.text ()
tm=QTime.fromString (tmStr, "hh:mm:ss")
#QTime 时间数据类型
self.ui.timeEdit.setTime(tm)
def on_pushButton_3_clicked(self) :
##"设置日期"按钮
dtStr=self.ui.lineEdit_2.text ()
dt =QDate.fromString (dtStr, "yyyy-MM-dd")
self.ui.dateEdit.setDate (dt)
def on_pushButton_4_clicked(self) :
dttmStr=self.ui.lineEdit_3.text()
dttm=QDateTime.fromString (dttmStr, "yyyy-MM-dd hh:mm:ss")
self .ui. dateTimeEdit.setDateTime (dttm)
- 可以用inputMask属性限制输入的格式以避免因输错而程序退出
五、下拉列表框
案列:
class QmyDialog(QWidget):
def __init__(self,parent =None):
super().__init__(parent)
self.ui =Ui_Dialog()
self.ui.setupUi(self)
def on_pushButton_2_clicked(self):
self.ui.comboBox.clear()
#icon = QIcon(":/icons/images/aim.ico")
pro =["山东","湖南","河北"]
for i in range(len(pro)):
self.ui.comboBox.addItem(pro[i])
#addItem()用于添加一个项到列表中
#原型1:addItem(self,str,userDate:Any = None) 添加一个项的文字
#原型2:addItem(self,QIcon,str,userDate:Any = None) 添加一个图片+文字
def on_pushButton_3_clicked(self):
self.ui.comboBox.clear()
@pyqtSlot(bool)
def on_checkBox_clicked(self,checked):
self.ui.comboBox.setEditable(checked)
#点击ComboBox时editable属性为True,返回checked,用setEditable来决定是否可以编辑
@pyqtSlot(str)
def on_comboBox_currentIndexChanged(self,curText):
self.ui.lineEdit.setText(curText)
# @pyqtSlot(int)
# def on_comboBox_currentIndexChanged(self,curText):
# self.ui.lineEdit.setText(str(curText))
# 用于返回下拉列表的索引号
def on_pushButton_clicked(self):
self.ui.comboBox_2.clear()
cities ={"背景":10,"上海":21,"天津":22,"徐州":516}
for i in cities:
self.ui.comboBox_2.addItem(i,cities[i])
#将用户的数据也输入进comboBox
@pyqtSlot(str)
def on_comboBox_2_currentIndexChanged(self,curText):
self.ui.lineEdit.setText(curText)
zone = self.ui.comboBox_2.currentData()
# 用currentData()获得关联数据
if (zone != None):
self.ui.lineEdit.setText(curText+":区号=%d"%zone)
学习整理自《Python Qt GUI与数据可视化编程》图书