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


本篇推文共计1000个字,阅读时间约1分钟。

在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控件从上到下进行垂直布局构成。

相应代码为:

boxLayout= QVBoxLayout(self)
boxLayout.addWidget(self.lineEdit)
boxLayout.addWidget(self.button1)
boxLayout.addWidget(self.button2)

子界面设计如下:

相应代码为:

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

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

@staticmethod
    def getDateTime(parent=None):
        dialog=DateDialog(parent)
        result=dialog.exec_()
        date=dialog.dateTime()
        return (date.date(),date.time(),result==QDialog.Accepted)

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

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)

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

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


图片|网络

编辑|一个码农

你与世界

只差一个

公众号


喜欢本文的话麻烦你点个“关注”加“在看”

觉得写得不错的话可以点击下方“喜欢作者”

你的支持是我不断前行的动力

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值