前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PyQt十讲 | 零基础教你实现界面多窗口跳跃

PyQt十讲 | 零基础教你实现界面多窗口跳跃

作者头像
潘永斌
发布2019-10-08 17:09:03
2.2K0
发布2019-10-08 17:09:03
举报
文章被收录于专栏:看那个码农

在PyQt编程过程中,经常会遇到输入或选择多个参数的问题,把多个参数写到一个窗口中,主窗口会显得很臃肿,所以,今天我们来学习一下界面多窗口的转换。

在前面的学习中,我们对PyQt的Qt Designer有了基本的学习,并且结合推文内容制作了单窗口的界面程序,如猜谜游戏,计算器等单界面程序。将所学的知识由理论走向了实际,并进行了融汇贯通。

今天的推文里,我们来介绍一个实现多窗口界面以及主窗口和子窗口之间的数值传递的程序。

效果图:

关于程序多窗口的实现,一般是添加一个按钮,调用一个子界面对话框,在对话框中进行参数的选择,关闭对话框并将参数返回给主窗口。

开发工具准备

1.Pycharm 2019.1.3社区版

2.Anaconda(Python 3.6.0,PyQt5)

开发流程

1

因为之前开发程序时候都用了Qt designer,太依赖于Qt designer进行GUI设计,所以本次开发程序时,就采用代码形式进行控件布局,当然这得提前构思好主界面和子界面的控件。

本次程序设计的内容是在主界面打开子界面之后,可以将子界面里面设置的时间返回至主界面。

根据程序设计的内容进行主界面和子界面的设计。

主界面设计如下:

这里的主界面采用的是QWidget,没有菜单栏,除此而外界面较为简单,分别由一个Line edit控件,两个Push button控件从上到下进行垂直布局构成。

相应代码为:

代码语言:javascript
复制
boxLayout= QVBoxLayout(self)
boxLayout.addWidget(self.lineEdit)
boxLayout.addWidget(self.button1)
boxLayout.addWidget(self.button2)

子界面设计如下:

相应代码为:

代码语言:javascript
复制
layout=QVBoxLayout(self)
self.datetime=QDateTimeEdit(self)
self.datetime.setCalendarPopup(True)
self.datetime.setDateTime(QDateTime.currentDateTime())
layout.addWidget(self.datetime)
buttons=QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel,Qt.Horizontal,self)
buttons.accepted.connect(self.accept)
buttons.rejected.connect(self.reject)
layout.addWidget(buttons)

子界面里面用到的是一个Datetime edit控件,一个日期选择控件,以及确认和取消这对按钮控件。

2

编写对应的子界面的函数:

代码语言:javascript
复制
@staticmethod
    def getDateTime(parent=None):
        dialog=DateDialog(parent)
        result=dialog.exec_()
        date=dialog.dateTime()
        return (date.date(),date.time(),result==QDialog.Accepted)

编写对应的主界面槽函数:

代码语言:javascript
复制
def onButton1Clicked( self ):
        dialog=DateDialog(self)
        result=dialog.exec_()
        date=dialog.dateTime()
        self.lineEdit.setText(date.date().toString())
        print('\n日期对话框的返回值')
        print('date=%s'%str(date.date))
        print('time=%s'%str(date.time()))
        print('result=%s'%result)

连接主界面的信号和槽函数:

代码语言:javascript
复制
self.lineEdit=QLineEdit(self)
self.button1=QPushButton('弹出对话框1')
self.button1.clicked.connect(self.onButton1Clicked)
self.button2=QPushButton('弹出对话框2')
self.button2.clicked.connect(self.onButton2Clicked)

3

整个程序运行起来如下所示:

以上就是今天介绍的多窗口小程序的设计流程

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 看那个码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档