Pyqt5系列二.docx

上传人:b****6 文档编号:7560527 上传时间:2023-01-25 格式:DOCX 页数:50 大小:824.37KB
下载 相关 举报
Pyqt5系列二.docx_第1页
第1页 / 共50页
Pyqt5系列二.docx_第2页
第2页 / 共50页
Pyqt5系列二.docx_第3页
第3页 / 共50页
Pyqt5系列二.docx_第4页
第4页 / 共50页
Pyqt5系列二.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

Pyqt5系列二.docx

《Pyqt5系列二.docx》由会员分享,可在线阅读,更多相关《Pyqt5系列二.docx(50页珍藏版)》请在冰豆网上搜索。

Pyqt5系列二.docx

Pyqt5系列二

Pyqt5系列

(二)

五基本界面组件之inputDialog

QInputDialog类提供了一种简单方面的对话框来获得用户的单个输入信息,可以是一个字符串,一个Int类型数据,一个double类型数据或是一个下拉列表框的条目。

对应的Dialog其中包括一个提示标签,一个输入控件(若是调用字符串输入框,则为一个QLineEdit,若是调用Int类型或double类型,则为一个QSpinBox,若是调用列表条目输入框,则为一个QComboBox),还包括一个确定输入(Ok)按钮和一个取消输入(Cancel)按钮。

QInputDialog:

classQInputDialog(QDialog)

|QInputDialog(QWidgetparent=None,Qt.WindowFlagsflags=0)

QInputDialog同样继承自QDialog,提供简单输入的对话框,

代码示例:

示例代码如下:

#-*-coding:

utf-8-*-

III

inputDialog

III

__author__='TonyZhu'

fromPyQt5.QtWidgetsimportQApplication,QWidget,QLineEdit,QInputDialog,QGridLayout,

QLabel,QPushButton,QFrame

classInputDialog(QWidget):

def__init__(self):

super(InputDialog,self).__init__()self.initUi()

definitUi(self):

self.setWindowTitle("项目信息")self.setGeometry(400,400,300,260)

label1=QLabel("项目名称:

")label2=QLabel("项目类型:

")label3=QLabel("项目人员:

")label4=QLabel("项目成本:

")label5=QLabel("项目介绍:

")self.nameLable=QLabel("PyQt5")self.nameLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)self.styleLable=QLabel("外包")self.styleLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)self.numberLable=QLabel("40")self.numberLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)self.costLable=QLabel("400.98")self.costLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)self.introductionLable=QLabel("服务外包第三方公司")self.introductionLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)

nameButton=QPushButton("...")nameButton.clicked.connect(self.selectName)styleButton=QPushButton("...")styleButton.clicked.connect(self.selectStyle)numberButton=QPushButton("...")numberButton.clicked.connect(self.selectNumber)costButton=QPushButton("...")costButton.clicked.connect(self.selectCost)introductionButton=QPushButton("...")introductionButton.clicked.connect(self.selectIntroduction)

mainLayout=QGridLayout()mainLayout.addWidget(label1,0,0)mainLayout.addWidget(self.nameLable,0,1)mainLayout.addWidget(nameButton,0,2)mainLayout.addWidget(label2,1,0)mainLayout.addWidget(self.styleLable,1,1)mainLayout.addWidget(styleButton,1,2)mainLayout.addWidget(label3,2,0)mainLayout.addWidget(self.numberLable,2,1)mainLayout.addWidget(numberButton,2,2)mainLayout.addWidget(label4,3,0)mainLayout.addWidget(self.costLable,3,1)mainLayout.addWidget(costButton,3,2)mainLayout.addWidget(label5,4,0)mainLayout.addWidget(self.introductionLable,4,1)mainLayout.addWidget(introductionButton,4,2)

self.setLayout(mainLayout)

defselectName(self):

name,ok=QInputDialog.getText(self,"项目名称","输入项目名称:

"

QLineEdit.Normal,self.nameLable.text())

ifokand(len(name)!

=0):

self.nameLable.setText(name)defselectStyle(self):

list=["外包","自研"]

style,ok=QInputDialog.getItem(self,"项目性质","请选择项目性质:

",list)

ifok:

self.styleLable.setText(style)

defselectNumber(self):

number,ok=QInputDialog.getInt(self,"项目成员","请输入项目成员人数:

",int(self.numberLable.text()),20,100,2)

ifok:

self.numberLable.setText(str(number))

defselectCost(self):

cost,ok=QInputDialog.getDouble(self,"项目成本","请输入项目成员人数:

",float(self.costLable.text()),100.00,500.00,2)

ifok:

self.costLable.setText(str(cost))

defselectIntroduction(self):

introduction,ok=QInputDialog.getMultiLineText(self,"项目介绍","介绍:

","服务外包第三方公司\nPythonproject")

ifok:

self.introductionLable.setText(introduction)

if__name__=="__main__":

importsysapp=QApplication(sys.argv)myshow=InputDialog()myshow.show()sys.exit(app.exec_())

运订之后的效果:

示例说明:

通过点击不同的按钮,来选择不同类型的输入对话框,从而选择所需的数据。

代码分析:

L18~22:

label仁QLabel("项目名称:

")label2=QLabel("项目类型:

")label3=QLabel("项目人员:

")label4=QLabel("项目成本:

")label5=QLabel("项目介绍:

")定义了数据项名称的标签。

L24~33:

self.nameLable=QLabel("PyQt5")

self.nameLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)self.styleLable=QLabel("外包")self.styleLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)

self.numberLable=QLabel("40")

self.numberLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)self.costLable=QLabel("400.98")self.costLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)self.introductionLable=QLabel("服务外包第三方公司")self.introductionLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)

定义了项目数据项中的数据内容,数据内容显示在对应的标签中。

setFrameStyle()设定标签的样式,有如下的样式:

QFrame.Box

QFrame.Panel

QFrame.WinPanel

QFrame.HLine

QFrame.VLine

QFrame.StyledPanelQFrame.SunkenQFrame.Raised

L35~L44:

nameButton=QPushButton("...")nameButton.clicked.connect(self.selectName)styleButton=QPushButton("...")styleButton.clicked.connect(self.selectStyle)numberButton=QPushButton("...")numberButton.clicked.connect(self.selectNumber)costButton=QPushButton("...")costButton.clicked.connect(self.selectCost)introductionButton=QPushButton("...")introductionButton.clicked.connect(self.selectIntroduction)实例化QPushButton对象,并将对应的clicked信号和自定义的槽函数绑定起来。

L46~61:

实例化网格布局,并将对应的控件添加到网格布局中。

功能分析:

1:

获取项目名称:

defselectName(self):

name,ok=QInputDialog.getText(self,"项目名称","输入项目名称:

"QLineEdit.Normal,self.nameLable.text())

ifokand(len(name)!

=0):

self.nameLable.setText(name)

QInputDialog中很多方法均为静态方法,因此不需要实例化直接可以调用。

调用

QInputDialog的getText()函数弹出标准字符串输入对话框,getText()函数原型如下:

|getText(...)

|QInputDialog.getText(QWidget,str,str,QLineEdit.EchoMode

echo=QLineEdit.Normal,strtext=QString(),Qt.WindowFlagsflags=0,Qt.InputMethodHintsinputMethodHints=Qt.ImhNone)->(str,bool)

第1个参数parent,用于指定父组件;

第2个参数str,是标准输入对话框的标题名;

第3个参数str,标准输入对话框的标签提示;

第4个参数echo,mode指定标准输入对话框中QLineEdit控件的输入模式;

第5个参数str,标准输入对话框中QLineEdit控件的默认值;

第6个参数flags,指明标准输入对话框的窗体标识;

第7个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局;

单击nameButton之后的效果:

若用户单击了“0K”按钮,则把新输入的名称更新至显示标签。

2:

获取项目属性:

defselectStyle(self):

list=[”外包",”自研”]

style,ok=QInputDialog.getltem(self,"项目性质","请选择项目性质:

",list)ifok:

self.styleLable.setText(style)

调用QInputDialog的getItem()函数弹出标准条目选择对话框,getItem()函数原型如下:

|getItem(...)

|QinputDialog.getltem(QWidget,str,str,list-of-str,intcurrent=O,booleditable=True,

Qt.WindowFlagsflags=0,Qt.InputMethodHintsinputMethodHints=Qt.lmhNone)->(str,bool)

第1个参数parent,用于指定父组件;

第2个参数str,是标准条目选择对话框的标题名;

第3个参数str,标准条目选择对话框的标签提示;

第4个参数list-of-str,标准条目选择对话框中对应条目的list;

第5个参数editable,标准条目选择对话框条目是否可编辑标识,默认为不可编辑;

第6个参数flags,指明标准输入对话框的窗体标识;

第7个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局.;

单击styleButton之后的效果:

若用户单击了“0K”按钮,则把新选择的类型更新至显示标签。

3:

获取项目成员:

defselectNumber(self):

number,ok=QInputDialog.getlnt(self,"项目成员","请输入项目成员人数:

",int(self.numberLable.text()),20,100,2)

ifok:

self.numberLable.setText(str(number))

调用QInputDialog的getlnt()函数弹出标准int类型输入对话框,getInt()函数原型如下:

|getInt(...)

|QInputDialog.getlnt(QWidget,str,str,intvalue=0,intmin=-2147483647,int

max=2147483647,intstep=1,Qt.WindowFlagsflags=0)->(int,bool)

第1个参数parent,用于指定父组件;

第2个参数str,是标准int类型输入对话框的标题名;

第3个参数str,标准int类型输入对话框的标签提示;

第4个参数value,标准int类型输入对话框中的默认值;

第5个参数min,标准int类型输入对话框中的最小值;

第6个参数max,标准int类型输入对话框中的最大值;

第7个参数step,标准int类型输入对话框中的步长,即QSpinBox中上下选择是数据

变化的步长;

第8个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局;

单击numberButton之后的效果:

「i垠目直臭i备

口成员人和:

.金F

[GT|[Um«1

]L

L.J

若用户单击了“OK”按钮,则把新选择的成员数据更新至显示标签。

4:

获取项目成本:

defselectCost(self):

cost,ok=QInputDialog.getDouble(self,"项目成本",”请输入项目成员人数:

”,float(self.costLable.text()),100.00,500.00,2)

ifok:

self.costLable.setText(str(cost))

调用QInputDialog的getDouble()函数弹出标准float类型输入对话框,getDouble()函数原型如下:

|getDouble(...)

|QinputDialog.getDouble(QWidget,str,str,floatvalue=0,floatmin=-2147483647,

floatmax=2147483647,intdecimals=1,Qt.WindowFlagsflags=0)->(float,bool)

第1个参数parent,用于指定父组件;

第2个参数str,输入对话框的标题名;

第3个参数str,输入对话框的标签提示;

第4个参数value,标准float类型输入对话框中的默认值;

第5个参数min,标准float类型输入对话框中的最小值;

第6个参数max,标准float类型输入对话框中的最大值;

第7个参数decimals,小数点后面保留的位数;

第8个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局;

单击costButton之后的效果:

若用户单击了“0K”按钮,则把新选择的成本数据更新至显示标签

5:

获取项目介绍:

defselectIntroduction(self):

introduction,ok=QInputDialog.getMultiLineText(self,"项目介绍","介绍:

","服务

外包第三方公司\nPythonproject")

ifok:

self.introductionLable.setText(introduction)

调用QInputDialog的getMultiLineText()函数弹出标准多行文本类型输入对话框,getMultiLineText()函数原型如下:

|getMultiLineText(...)

|QinputDialog.getMultiLineText(QWidget,str,str,strtext=",Qt.WindowFlags

flags=0,Qt.InputMethodHintsinputMethodHints=Qt.lmhNone)->(str,bool)

第1个参数parent,用于指定父组件;

第2个参数str,输入对话框的标题名;

第3个参数str,输入对话框的标签提示;

第4个参数text,输入对话框中LineEdit的默认值;

第5个参数flags,指明标准输入对话框的窗体标识;

第6个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局;

单击introductionButton之后的效果:

若用户单击了“0K”按钮,则把新修改的项目介绍信息更新至显示标签

六基本界面组件之MessageBox

消息框针对某个场景以文本的形式向用户进行提示,为了获取用户的响应消息框可以显

示图标和标准按钮。

在实际的界面交互中,经常会看到各种类型的消息框,显示关于消息框,显示严重错误消息框,显示警告消息框等等。

由于这些对话框在各个程序中都是一样的,所

以QT中就统一提供了一个QMessageBox的类,这样在所有程序中都可以直接使用。

QMessageBox提供两套接口来实现,一种是staticfunctions(静态方法调用),另外一种

theproperty-baseAPI(基于属性的API)。

直接调用静态方法是一种比较简单的途径,但是没有基于属性API的方式灵活。

在QT的官网上推荐使用theproperty-baseAPI。

Staticfunctions方式:

QMessageBox用于显示消息提示。

一般会使用到其提供的几个static函数(C++层的函

数原型,其参数类型和

python中的一样):

惫回值

函数原型

void

about(QWidget:

srct

OStringtlconstQString

itext)

显示关于对话框,遠是一个杲简单的对话框>对话框只有一平0K按钮

void

aboutQtCQWidLget♦parent^constQStringAtitle=QStringO)

显示关于at对话框•该对话框用于显示有关Qt的信息.

StaadardButton

critical(QWidget*par电nt,constQString血titl岂constQStringStsniirdEuttcnsbuttens=Ok,SlanderIButtendsfaultButten=Vofiuttan)

显示严重错误对话框•这个对话框将显示一亍红色的堵误符号.我们可以通过button参数指明苴显示的按钮-默认情况下只有一个Ok按钮「我们可以悽用Stand^rdButtons^型指定寥种按钮

StaiidardButtOin

informaticn(QWidget*pareixesnstQString勺cowE

ing

buttons=Ok,StandardButtoikdefaultButtan=NoEutton)

显示提示对话框,提供一个晋通信息图

StaxidardB口七ton

question(QWidget*pareikt、constQString此titlconstQString

Atext,,StandardButtciisbuttens-StandardEuttons(TiesNoJ』StanlardButtondef&ultEuttcn=MoButtwi)

显示诃问对话框,提供一牛问号图标

StdButton

warningiget*par&nt,const

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1