专栏首页看那个码农PyQt十讲 | 零基础教你实现界面多窗口跳跃

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

在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

本文分享自微信公众号 - 看那个码农(gh_c2cbbe45c86d),作者:看那个码农

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 干货 | 一分钟带你了解PyQt的窗口布局

    水平布局管理器(QHBoxLayout):这个管理器是将控件进行水平布局,在水平方向上整理排列控件。

    潘永斌
  • PyQt十讲 | 零基础使用摄像头捕获视频并显示

    OpenCV是一个开源的跨平台计算机视觉库,轻量,高效,由一系列 C 函数和少量 C++ 类构成,提供了Python、MATLAB等语言的接口,实现了图像处理和...

    潘永斌
  • 干货 | 一分钟了解PyQt的绝对定位

    今天我们首先来谈谈的是PyQt编程中的绝对定位,绝对定位就是每个控件按程序员自己指定的位置进行放置。

    潘永斌
  • 搭一个简单的接口测试框架

    可以理解为工具的集合,把日常所需要实现功能的代码,模块进行封装起来结合其他的工具进行测试。得出结论报告。

    赵云龙龙
  • DQN系列(3): 优先级经验回放(Prioritized Experience Replay)论文阅读、原理及实现

    通常情况下,在使用“经验”回放的算法中,通常从缓冲池中采用“均匀采样(Uniformly sampling)”,虽然这种方法在DQN算法中取得了不错的效果并登顶...

    J.Q.Wang@2048
  • Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来! | 附代码

    Pytorch模块用来模型训练和网络层建立;其底层和Torch框架一样,但是使用Python重新写了很多内容,不仅更加灵活,支持动态图,而且提供了Python接...

    AI科技大本营
  • python pyqt5 QDateTimeEdit 常用

    setDisplayFormat() yyyy MM dd HH mm ss setMinimumDate() setMaximumDate() tim...

    用户5760343
  • tkinter带界面实现指定目录生成器

    路径是自己设定好的,然后输入要生成的文件夹数量,然后再点相应的按钮就可以了 下面放上源码,有需要的可以自己进行修改:

    小海怪的互联网
  • [接口测试 - 基础篇] 08 封装个基本的excel解析类

    概述 本文基于openpyxl封装一个excel解析类,请注意,不采用Python的任何高级特性,就简简单单的一个类,实现excel的一些基本操作,并演示如何...

    苦叶子
  • 使用PyTorch进行情侣幸福度测试指南

    计算机视觉--图像和视频数据分析是深度学习目前最火的应用领域之一。因此,在学习深度学习的同时尝试运用某些计算机视觉技术做些有趣的事情会很有意思,也会让你发现些令...

    磐创AI

扫码关注云+社区

领取腾讯云代金券