137.Python-PySide6:QInputDialog输入对话框的创建与使用

QInputDialog是一个标准的对话框,由一个文本框和两个按钮(OK按钮和Cancel按钮)组成,当用户单击OK按钮或回车键后,在父窗口可以收集通过对话框输入的信息。

输入的信息可以是:数字、字符串、列表项。

也可以从Qt Desinger 直接创建对话框窗口。本文为了更好理解继承和类的概念,直接使用代码来创建窗口。


运行效果:

完整代码

import sysfrom PySide6 import QtCore, QtGui, QtWidgetsclass dlgInput(QtWidgets.QWidget): #这里继承QWidget    def __init__(self):        super().__init__()        #获取主屏幕大小        screen=QtGui.QGuiApplication.primaryScreen().geometry()        sw,sh=screen.width(),screen.height()                #设置窗口大小,屏幕居中        #self.setFixedSize(400,300) #窗口大小固定不可调        w,h=400,300        self.setGeometry((sw-w)//2,(sh-h)//2,w,h) #窗口大小可调                #创建四个按钮,一个文本框        self.btnint=QtWidgets.QPushButton("获取整数")        self.btndouble=QtWidgets.QPushButton("获取实数")        self.btntxt=QtWidgets.QPushButton("获取文本")        self.btnitem=QtWidgets.QPushButton("获取列表")        self.txtbox=QtWidgets.QLineEdit()                #创建2个水平布局和1个垂直父布局        layout1=QtWidgets.QHBoxLayout()        layout2=QtWidgets.QHBoxLayout()        layout3=QtWidgets.QVBoxLayout(self) #指定继承父窗口        #添加组件到布局上        layout1.addWidget(self.txtbox)        layout2.addWidget(self.btnint)        layout2.addWidget(self.btndouble)        layout2.addWidget(self.btntxt)        layout2.addWidget(self.btnitem)                #管理布局        layout3.addLayout(layout1)        layout3.addLayout(layout2)         #信号槽        self.btnint.clicked.connect(lambda:self.getdata(self.btnint))        self.btndouble.clicked.connect(lambda:self.getdata(self.btndouble))        self.btntxt.clicked.connect(lambda:self.getdata(self.btntxt))        self.btnitem.clicked.connect(lambda:self.getdata(self.btnitem))             #槽函数     def getdata(self,btn):        txt=btn.text()        if txt=="获取列表":            items=["香蕉","苹果","西瓜","葡萄","荔枝","梨","桃","柚子","柠檬"]            item,ok=QtWidgets.QInputDialog.getItem(self,"选择水果","请选择水果",items,0,False)            if ok and item:                self.txtbox.setText(item)        else:            if txt=="获取整数":                data,ok=QtWidgets.QInputDialog.getInt(self,txt,"请输入:"+txt[-2:])            if txt=="获取实数":                data,ok=QtWidgets.QInputDialog.getDouble(self,txt,"请输入:"+txt[-2:])            if txt=="获取文本":                data,ok=QtWidgets.QInputDialog.getText(self,txt,"请输入:"+txt[-2:])            if ok:                self.txtbox.setText(str(data))if __name__ == '__main__':    app=QtWidgets.QApplication(sys.argv)    mywin=dlgInput()    mywin.setWindowTitle("Dialog Input Window  -  PySide6")    mywin.show()    sys.exit(app.exec())    

运行界面

说明:使用代码来创建组件和管理布局,一定清楚继承关系,本文layout3是layout1和layout2的parent,所以不能给layout1和layout2指定其他的parent,否则会报错。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章