精华内容
下载资源
问答
  • PyQt5

    2020-10-21 14:10:44
    PyQt5整体介绍 PyQt5是基于图形程序框架Qt5的Python语言实现,由一组Python模块构成。PyQt5是一套Python绑定Digia QT5应用的框架。它可用于Python 2和3。Qt库是最强大的GUI库之一。 pyqt5做为Python的一个模块,它有...

    在这里插入图片描述

    PyQt5整体介绍

    PyQt5是基于图形程序框架Qt5的Python语言实现,由一组Python模块构成。PyQt5是一套Python绑定Digia QT5应用的框架。它可用于Python 2和3。Qt库是最强大的GUI库之一。
    pyqt5做为Python的一个模块,它有620多个类和6000个函数和方法。这是一个跨平台的工具包,它可以运行在所有主要的操作系统,包括UNIX、Windows、Mac OS、Linux等。
    PyQt5是双重许可。开发者可以在GPL和商业许可之间进行选择。
    PyQt5的官方网站:PyQt5


    PyQt5主要模块:

    • QtCore模块:涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及的时间、文件、目录、数据类型、文本流、链接、QMimeData、线程或进程等对象。
    • QtGui模块:涵盖了多种基本图形功能的类,包括但不限于:窗口集、事件处理、2D图形、基本的图像和界面、字体和文本类。
    • QtWidgets模块:包含了一整套UI元素控件,用于建立符合系统风格的Classic界面,非常方便,可以在安装时选择是否使用此功能。
    • QtMultimedia模块:包含了一套类库,用于处理多媒体事件,通过调用API接口访问摄像头、语音设备、收发消息(Radio Functionality)等。
    • QtBluetooth模块:包含了处理蓝牙活动的类库,其功能包括:扫描设备、连接、交互等行为。
    • QtNetwork模块:包含了用于进行网络编程的类库,通过提供便捷的TCP/IP及UDP的C/S代码集合,使得基于Qt的网络编程更容易。
    • QtPositioning模块:用于获取位置信息,此模块允许使用多种方式实现定位,包括但不限于:卫星、无线网、文字信息。此模块一般用在网络地图定位系统中。
    • Enginio模块:用于构建客户端的应用程序库,在运行时访问Qt Cloud 服务器托管的应用程序。
    • QtWebSockets模块:包含了一组类程序,用于实现WebSocket协议
    • QtWebKit模块:包含了用于实现基于WebKit2的网络浏览器的类库。
    • QtWebKitWidgets模块:提供了一组类库,用于实现一种由Widgets包构建的、基于WebKit1的网络浏览器。
    • QtXml模块:包含了用于处理XML的类库,此模块为SAX和DOM API 的实现提供了函数。
    • QtSvg模块:通过一组类库,为显示矢量图形文件的内容提供了函数。
    • QtSql模块:提供了数据库对象的接口以供使用。
    • QtTest模块:包含了通过单元测试,调试PyQt5应用程序的功能。
    • QtHelp模块:包含了用于创建和查看可查找的文档的类。
    • QtOpenGL模块:使用OpenGL库来渲染3D和2D图形。该模块使得Qt GUI库和OpenGL库无缝集成。
    • QtXmlPatterns模块:所包含的类实现了对XML和自定义数据模型的Xquery与XPath的支持。
    • QtDesigner模块:所包含的类允许使用PyQt扩展Qt Designer
    • Qt模块:将上面模块中的类综合到一个单一的模块中。这样做的好处是你不用担心哪个模块包含了哪个特定的类;坏处是加载到整个Qt框架中,从而增加了应用程序的内存占用。
    • UIC模块:所包含的类用来处理.ui文件,该文件由Qt Designer创建,用于描述整个或者部分用户界面。它可以将.ui文件编译为.py文件,以便其他Python程序调用。
      另外,PyQt5新增的QtWebEngineWidgets模块替代了过时的QtWebKit,但是QtWebKit还在,而新模块更耗内存,具体使用哪个由读者自己决定。

    PyQt 5主要类

    PyQt5 API拥有620多个类和6000个函数。它是一个跨平台的工具包,可以运行在所有主流的操作系统上,包括Windows、Linux和Mac OS。
    PyQt 5中重要的类及其继承关系:
    在这里插入图片描述

    • QObject类:在类层次结构中是顶部类(Top Class),它是所有PyQt对象的基类。
    • QPaintDevice类:所有可绘制的对象的基类。
    • QApplication类:用于管理图形用户界面应用程序的控制流和主要设置。它包含主事件循环,对来自窗口系统和其他资源的所有事件进行处理和调度;它也对应用程序的初始化和结束进行处理,并且提供对话管理;还对绝大多数系统范围和应用程序范围的设置进行处理。
    • QWidget类:所有用户界面对象的基类。QDialog类和QFrame类继承自QWidget类,这两个类有自己的子类系统(Sub-Class System)。
    • QFrame类:有框架的窗口控件的基类。它也被用来直接创建没有任何内容的简单框架,但是通常要用到QHBox或QVBox,因为它们可以自动布置放到框架中的窗口控件。
    • QMainWindow类:提供一个有菜单栏、锚接窗口(如工具栏)和状态栏的主应用程序窗口。
    • QDialog类:最普通的顶级窗口。如果一个窗口控件没有被嵌入到父窗口控件中,那么该窗口控件就被称为顶级窗口控件。在通常情况下,顶级窗口控件是有框架和标题栏的窗口。在Qt中,QMainWindow和不同的QDialog的子类是最普通的顶级窗口。

    常用的控件

    QWidget是所有用户界面类的基类,它能接收所有的鼠标、键盘和其他系统窗口事件。没有被嵌入到父窗口中的Widget会被当作一个窗口来调用,当然,它也可以使用setWindowFlags(Qt.WindowFlags)函数来设置窗口的显示效果。QWidget的构造函数可以接收两个参数,其中第一个参数是该窗口的父窗口;第二个参数是该窗口的Flag,也就是Qt.WindowFlags。根据父窗口来决定Widget是嵌入到父窗口中还是被当作一个独立的窗口来调用,根据Flag来设置Widget窗口的一些属性。
    QMainWindow(主窗口)一般是应用程序的框架,在主窗口中可以添加所需要的Widget,比如添加菜单栏、工具栏、状态栏等。主窗口通常用于提供一个大的中央窗口控件(如文本编辑或者绘制画布)以及周围的菜单栏、工具栏和状态栏。QMainWindow常常被继承,这使得封装中央控件、菜单栏,工具栏以及窗口状态变得更容易,也可以使用Qt Designer来创建主窗口。

    QApplication类

    QApplication类用于管理图形用户界面应用程序的控制流和主要设置,可以说QApplication是PyQt5的整个后台管理的命脉。任何一个使用PyQt开发的图形用户界面应用程序,都存在一个QApplication对象。
    在PyQt中,可以通过如下代码载入必需的模块,获得QApplication类。

    from PyQt5.QtWidgets import QApplication
    

    在PyQt的应用程序实例中包含了QApplication类的初始化,通常放在Python脚本的if name == “main”: 语句后面,类似于放在C的main函数或者Java的main函数里,作为主程序的入口因为QApplication对象做了很多初始化,所以它必须在创建窗口之前被创建。
    QApplication类还可以处理命令行参数,在QApplication类初始化时,需要引入参数sys.argv。sys.argv是来自命令行的参数列表,Python脚本可以从shell运行,比如用鼠标双击qtSample.py,就启动了一个PyQt应用程序。引入sys.argv后就能让程序从命令行启动,比如在命令行中输入 python qtSample.py,也可以达到同样的效果。
    QApplication类的初始化可以参考以下脚本引用。应用程序整体框架为:

    if name == "main":
    app = QApplication(sys.argv)
    

    界面生成代码

    sys.exit(app.exec_())
    sys.exit()函数可以结束一个应用程序,使应用程序在主循环中退出。
    QApplication采用事件循环机制,当QApplication初始化后,就进入应用程序的主循环(Main Loop),开始进行事件处理,主循环从窗口系统接收事件,并将这些事件分配到应用程序的控件中。当调用sys.exit()函数时,主循环就会结束。
    PyQt 5的应用程序是事件驱动的,比如键盘事件、鼠标事件等。在没有任何事件的情况下,应用程序处于睡眠状态。主循环控制应用程序什么时候进入睡眠状态,什么时候被唤醒。


    PyQt4和PyQt5的区别

    pyqt5不向后兼容pyqt4。pyqt5有几个显著的变化,将旧代码调整到新库并不困难。有几个大的改变如下:

    • Python模块已经重组。一些模块已经删除(qtscript),有的被分割成子模块(QtGui,QtWebKit)。
    • 新的模块作了详细的介绍,包括qtbluetooth,qtpositioning,或enginio。
    • PyQt5只支持新型的信号和槽handlig。电话signal()或slot()不再支持。
    • PyQt5不支持Qt的API被标记为过时或陈旧的任何部分在QT V5.0。

    END

    展开全文
  • PyQt5(designer)入门教程

    万次阅读 多人点赞 2019-05-19 08:39:36
    PyQt5入门教程 注:这是当时闲着无聊写到github page的,在CSDN上也看了大佬们各种各样的教程跟疑难杂症解答,感觉我这个不放出来也有点可惜,希望各位能够从中收益吧。 在网上看了不少关于PyQt5的中文教程,但是无...

    PyQt5入门教程

    2019/12/11更新:我平时不看CSDN的,之前一时兴起发了过来,没想到反响还不错。这次就顺便把后来新增的一个小节放上来,并且在文末增加了我的GitHub(一看GitHub就知道我是个菜鸡,大家都是互相学习啦~)

    注:这是当时闲着无聊写到github page的,在CSDN上也看了大佬们各种各样的教程跟疑难杂症解答,感觉我这个不放出来也有点可惜,希望各位能够从中收益吧。

    在网上看了不少关于PyQt5的中文教程,但是无外乎是过时了,讲解不清晰易懂,或者资料不完整。Youtube上面倒是有不少视频,但是不少Youtuber居然还在手写ui而不是利用方便快捷的Qt Designer。仅有的几个视频虽然利用了Qt Designer来设计UI,但是他们并没有将UI跟逻辑分离,这种行为并不是我期望的。

    为此,我花费了不少时间在网上寻找各种资料。于是乎,我最终还是下定决心把自己的学习过程给记录下来。记录下来是给我自己复习跟参考的,如果有人能够从中受益,那也挺好,不用浪费时间去到处找答案。

    0x00 安装环境清单

    我使用的环境如下:

    • Windows 10 (Build 17763)
    • Python 3.7.2
    • VSCode 1.33.0
    • PyQt5
    • Qt Designer

    如果你使用的是OSX或者Linux,请自行替换教程中的一些操作。

    本文并不讨论Python和VSCode的安装,如果没有VSCode,你可以用各种同类IDE替代或者安装它。

    本文不讨论多Python共存,毕竟Python2.7在2020年就要退役了,而且我本人也没这需求。

    0x01 安装PyQt5

    下面直接使用pip来安装PyQt5,此处可能是pip/pip3,或者两者皆可,后面不再重复

    直接pip安装PyQt5

    pip install PyQt5
    

    由于Qt Designer已经在Python3.5版本从PyQt5转移到了tools,因此我们还需要安装pyqt5-tools

    pip install pyqt5-tools
    

    到这一步,PyQt5就安装完成了,你可以通过下面若干可选的操作来检查是否已经安装成功:

    • Win+S呼出Cornata主面板(搜索框),输入designer,如果看到跟下图类似的结果说明PyQt Designer已经被安装

    designer_install

    • 在cmd中输入pyuic5,如果返回“Error: one input ui-file must be specified”说明安装成功。

    0x02 初识Qt Designer

    注:Qt Designer的界面是全英文的,幸运的是有汉化方法,不过因为我本人用不上,所以如果有这方面需求可以自行搜索。

    我比较习惯用Win+S呼出Cornata主面板(搜索框)来启动各种应用,那么这里就是在搜索框中输入designer并敲回车,就能够启动Qt Designer了。

    初次启动会弹出这个“New Form”窗口,一般来说选择“Main Window”然后点击“Create”就可以了。下方有个“Show this Dialogue on Startup”的checkbox,如果不想每次启动都看到这个“New Form”窗口,可以取消勾选。

    new_form
    创建“Main Window”之后,我们会看到如下画面

    designer_ui
    下面就来简单介绍下整个画面的构成:

    • 左侧的“Widget Box”就是各种可以自由拖动的组件

    • 中间的“MainWindow - untitled”窗体就是画布

    • 右上方的"Object Inspector"可以查看当前ui的结构

    • 右侧中部的"Property Editor"可以设置当前选中组件的属性

    • 右下方的"Resource Browser"可以添加各种素材,比如图片,背景等等,目前可以不管

    大致了解了每个板块之后,就可以正式开始编写第一个UI了

    0x03 HelloWorld!

    注:从这里开始,相关代码可以在/assets/code/pyqt5中找到

    注:本文用到的代码都在我github,就不在CSDN这里上传了

    通常来说,编写GUI有两种方法:第一种就是直接使用方便快捷的Qt Designer,第二种就是写代码。在有Qt Designer的情况下,是完全不推荐费时费力去手写GUI代码的。Qt Designer可以所见即所得,并且可以方便的修改并做出各种调整。

    按照惯例,我们先来实现一个能够显示HelloWorld的窗口。

    1)添加文本

    在左侧的“Widget Box”栏目中找到“Display Widgets”分类,将“Label”拖拽到屏幕中间的“MainWindow”画布上,你就获得了一个仅用于显示文字的文本框,如下图所示。

    designer_create_label

    2)编辑文本

    双击上图中的“TextLabel”,就可以对文本进行编辑,这里我们将其改成“HelloWorld!”,如下图所示。如果文字没有完全展示出来,可以自行拖拽空间改变尺寸。

    特别提醒,编辑完文本之后记得敲击回车令其生效!

    designer_change_label_text

    3)添加按钮

    使用同样的方法添加一个按钮(PushButton)并将其显示的文本改成“HelloWorld!”,如下图所示。

    designer_create_pushbutton

    4)修改窗口标题

    下面修改窗口标题。选中右上方的"Object Inspector"中的“MainWindow”,然后在右侧中部的"Property Editor"中找到“windowTitle”这个属性,在Value这一栏进行修改,修改完记得敲击回车。

    5)编辑菜单栏

    注意到画布的左上方有个“Type Here”,双击它即可开始编辑菜单栏。菜单栏支持创建多级菜单以及分割线(separator)。我随意创建了一些菜单项目,如下图所示。

    designer_create_menu

    6)预览

    使用快捷键Ctrl+R预览当前编写的GUI(或者从菜单栏的Form > Preview / Preview in进入)

    designer_preview

    7)保存

    如果觉得完成了,那就可以保存成*.ui的文件,这里我们保存为HelloWorld.ui。为了方便演示,我将文件保存到D盘。

    8)生成Python代码

    使用cmd将目录切到D盘并执行下面的命令。请自行将下面命令中的name替换成文件名,比如本例中的“HelloWorld.ui”

    pyuic5 -o name.py name.ui
    

    生成的代码应该类似下图所示

    designer_code_helloworld

    9)运行Python代码

    此时尝试运行刚刚生成的“HelloWorld.py”是没用的,因为生成的文件并没有程序入口。因此我们在同一个目录下另外创建一个程序叫做“main.py”,并输入如下内容。在本例中,gui_file_name就是HelloWorld,请自行替换。

    import sys
    from PyQt5.QtWidgets import QApplication, QMainWindow
    
    import gui_file_name
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        MainWindow = QMainWindow()
        ui = gui_file_name.Ui_MainWindow()
        ui.setupUi(MainWindow)
        MainWindow.show()
        sys.exit(app.exec_())
    

    然后运行“main.py”,你就能看到刚刚编写的GUI了!

    designer_run_helloworld

    10)组件自适应

    如果你刚刚尝试去缩放窗口,会发现组件并不会自适应缩放,因此我们需要回到Qt Designer中进行一些额外的设置。

    点击画布空白处,然后在上方工具栏找到grid layout或者form layout,在本例中我们使用grid layout。两种layout的图标如下图所示。

    designer_layout_helloworld

    顺带一提,上图中layout的左边有三条横线以及三条竖线的图标,这两个是用于对齐组件,非常实用。

    设置grid layout后,我们使用Ctrl+R预览,这次组件可以自适应了!因为我们已经将UI(HelloWorld.py/HelloWorld.ui)跟逻辑(main.py)分离,因此直接重复步骤7-8即可完成UI的更新,无需改动逻辑(main.py)部分。

    0x04 Interaction

    刚刚写的HelloWorld中,我们设置的按钮(PushButton)是没有实际作用的,因为我们并没有告诉这个按钮应该做什么。实际上,要让这个按钮做点什么只需要增加一行代码就可以了。

    1)获取按钮id

    打开HelloWorld.ui,在designer中选中对应的按钮,从“Property Editor”中可以得知这个按钮的“objectName”叫做“pushButton”,如下图所示。

    designer_pushbutton_id

    2)设置触发

    Qt中有“信号和槽(signal and slot)”这个概念,不过目前无需深究,也无需在Designer中去设置对应按钮的“信号和槽”,直接在“main.py”中“MainWindow.show()”的后面加入下面这样的一行代码

    ui.pushButton.clicked.connect(click_success)
    

    下面简单解释下这行代码

    • pushButton就是刚刚获取的按钮id
    • clicked就是信号,因为是点击,所以我们这里用clicked
    • click_success就是对应要调用的槽,注意这里函数并不写成click_success()

    3)设置函数

    既然刚刚设置了按钮的触发并绑定了一个函数click_success,我们就要在“main.py”中实现它。示例如下

    def click_success():
        print("啊哈哈哈我终于成功了!")
    

    4)运行!

    UI跟逻辑分离的好处就在这里,我们这次不用去管“HelloWorld.py”了,直接运行修改完的“main.py”。点击按钮,这次你会发现在控制台中有了我们预设的输出。

    0x05 Conversion

    这次我们来进行实战演练,编写一个带GUI的汇率转换器。

    1)设计UI

    conversion_ui

    通过上面的讲解,你应该能够毫无压力的设计上面这样的UI并获得对应的代码。如果不行,那么不建议继续往下阅读,应当回头复习。

    2)传参

    现在我们有了GUI的代码以及上一节中使用的“main.py”,我们可以开始编写这个汇率转换器的逻辑部分。

    在上一节,我们介绍了如何让按钮响应点击操作,但是并没有接受任何参数,而且只是在控制台输出。但是,上一节中说明了并不能通过正常的方式进行传参。因此,对于传参,有两种解决方案,一种是使用lambda,还有一种是使用functool.partial。在接下来的环节中我们会使用partial。

    partial的用法如下所示:

    partial(function, arg1, arg2, ......)
    

    既然使用partial传参,那么我们就要在程序(main.py)的头部加上下面这行。

    from functools import partial
    

    然后我们把上一节中的按钮触发那行代码修改成下面这样。

    ui.pushButton.clicked.connect(partial(convert, ui))
    

    3)编写convert函数

    首先,我们要获取用户输入的数字。为了使得教程简洁易懂,我们这次只讲解单向的汇率转换。既然是单项的转换,那么我们只需要获取左侧的文本框id。在本例中,左侧的文本框id为lineEdit。如果你对此感到一头雾水,请停下并回头复习。

    获取文本使用的是text()方法,因此读取用户输入的代码如下

    input = ui.lineEdit.text()
    

    接着我们进行汇率转换,注意这里要进行类型转换

    result = float(input) * 6.7
    

    最后我们让右边的文本框显示结果

    ui.lineEdit_2.setText(str(result))
    

    下面是convert函数的代码

    def convert(ui):
        input = ui.lineEdit.text()
        result = float(input) * 6.7
        ui.lineEdit_2.setText(str(result))
    

    一个简单的汇率转换器就这样诞生了!

    那么,如何知道一个组件都有什么方法呢?直接去Qt官方文档查看就可以了。本节使用到的lineEdit的相关方法在这里

    0x06 threading

    1)前言

    这几天在用PyQt5写东西的时候遇到这样一个问题,网上资料也特别少,我感觉值得拿出来说一说。

    我的程序中使用了threading模块,GUI作为主线程去启动负责逻辑处理的子线程。其中,我设计的GUI里头有一个日志框,用来代替终端显示各种日志输出。既然子线程是负责逻辑处理,那么想当然的就会直接在子线程操作GUI的显示。

    都说了想当然,那当然不行咯,在子线程对GUI操作的时候,终端会出现下面这个错误,但是程序又不会马上闪退。

    QObject::connect: Cannot queue arguments of type 'QTextCursor'
    (Make sure 'QTextCursor' is registered using qRegisterMetaType().)
    

    更让人摸不着头脑的是,过一阵子闪退的时候,会出现下面这句话:

    段错误,核心已转储
    

    这啥玩意儿?能说人话么?一番搜索之后,发现这个原来英语叫做“Segmentation fault (core dumped)”。

    "Segmentation fault"用人话来说大概就是“你尝试访问你无法访问的内存”。

    然后我把上面的报错信息搜索了下,发现之前有人在StackOverflow问过,但是答案牛头不对马嘴,不过倒是在评论区发现了大佬的留言。

    It is likely that the asker was not actually directly using QTextCursor, but rather using GUI code from a thread that was not the GUI thread. Attempting this seems to result in this error arising from Qt-internal code, e.g. for QTextEdit.append()
    

    简而言之,就是说虽然报错显示QTextCursor,但是实际上是在其它线程通过Qt内部的方法间接调用了这个东西。

    热心大佬还留了个链接,我跟过去看了,收获不少。

    It appears you're trying to access QtGui classes from a thread other than the main thread. Like in some other GUI toolkits (e.g. Java Swing), that's not allowed.
    
    Although QObject is reentrant, the GUI classes, notably QWidget and all its subclasses, are not reentrant. They can only be used from the main thread.
    

    这个终于说到点子上了,一句话总结就是子线程不能调用主线程的QtGui类。

    所以大佬给出的方案如下:

    A solution is to use signals and slots for communication between the main thread (where the GUI objects live) and your secondary thread(s). Basically, you emit signals in one thread that get delivered to the QObjects via the other thread.
    

    大概翻译下,就是说可以通过信号和槽来完成子线程跟GUI所在的主线程的通信,就是通过在子线程释放信号,传递到主线程的槽来完成。

    可惜的是,大佬并没有给出示例代码,那接下来就是动手实践了。

    2)实践

    首先我们在子线程的代码中创建一个对象,并且继承QObject(因为需要释放信号)。

    class UpdateLog(QObject):
        update_signal = pyqtSignal()
     
        def __init__(self):
            QObject.__init__(self)
     
        def update(self):
            self.update_signal.emit()
    

    update_signal = pyqtSignal()就是使用Signal类来创建一个自定义的信号。

    self.update_signal.emit()就是当条件满足的时候,子线程可以调用UpdateLog类的update方法,就会发出信号。

    做完这些之后,主线程中别忘了连击信号和槽,比如self.afk.utils.logger.update_signal.connect(self.write_log)。然后现在再尝试运行程序,就没有任何问题了。

    不仅如此,其实其它需要共享的信息,也可以通过自定义信号和槽来传递。

    那么,现在就可以愉快的在PyQt程序中使用threading模块了。

    0x0? 小结

    本文只是抛砖引玉,上面这些只是PyQt5的入门内容。不过学会了简单的交互方法,其它的也差不多能依葫芦画瓢做出来。

    本文中设计的程序在/assets/code/pyqt5中。

    那么,就先写到这里了!

    0xff Info

    我不是大佬,不是CS专业的,水平相对比较菜,只是一个对计算机感兴趣的业余爱好者,在这方面基本上是自学成才,毕竟兴趣是第一生产力嘛~

    我的GitHub

    其中这个tree项目的GitHub Page就放了些乱七八糟的自学笔记,有到处搜刮的也有原创的。有帮助的话不如给我这个tree项目点个星呗(手动滑稽)。

    展开全文
  • Win10安装PyQt5与Qt Designer【转】

    万次阅读 2020-05-21 18:37:04
    会自动下载PyQt5以及sip并安装,因为PyQt5不再提供Qt Designer等工具,所以需要再安装pyqt5-tools,可直接在cmd中通过pip安装 1 pip install pyqt5-tools 因为网络等原因,可能会安装失败,可以先现在whl文件再...

     

    https://blog.csdn.net/u011342224/article/details/78879633

    1、直接在cmd中通过pip安装PyQt5

    1 pip install pyqt5

    会自动下载PyQt5以及sip并安装,因为PyQt5不再提供Qt Designer等工具,所以需要再安装pyqt5-tools,可直接在cmd中通过pip安装

    1 pip install pyqt5-tools

    因为网络等原因,可能会安装失败,可以先现在whl文件再进行安装(下载地址:https://pypi.python.org/pypi/pyqt5-tools/5.7.dev9)

    安装好之后在Python安装目录的\\Lib\site-packages\pyqt5-tools\designer文件夹下面能够找到designer.exe,运行即可

     

    https://blog.csdn.net/a359680405/article/details/45074761

    配置PyCharm

    1)打开PyCharm,执行快捷键ctrl+alt+s打开设置界面,输入tool,点开external tools,配置qtdesigner。

    点击左上角的加号,作如下配置:

     

    在Qt Designer的设置中,Program选择PyQt安装目录中 designer.exe 的路径

    Work directory 使用变量 $FileDir$ (点击后面的 Insert macro 按钮可以不用输入双击上屏)

     

    2).设置“PyUIC” -- 这个主要是用来将 Qt界面 转换成 py代码

     

    在PyUIC的设置中,其他的都差不多,Program 写入Python的地址,Parameters写入

    -m PyQt5.uic.pyuic  $FileName$ -o $FileNameWithoutExtension$.py

    把上面的Python路径修改成自己的即可!

    Work directory 使用变量 $FileDir$

     

    使用时先用QtDesigner生成ui文件,然后利用PyUIC将ui文件转换成对应python文件

     

     

    -----------------------------------------------------华丽的分割线--------------------------------------------------------------------

           最近用到了资源文件,资源文件需要用pyrcc5.exe转码,配置方式如图

    饮水思源,不忘初心。 要面包,也要有诗和远方。

    分类: python

    展开全文
  • Py之GUI之PyQt5PyQt5的简介、入门、安装(PyQt5Designer安装、QtCreator安装)、使用方法详细攻略 目录 PyQt5的简介 1、Qt特点 PyQt5入门 1、QT中QT Widgets Application中QWidget、QDialog及QMainWindow...

    Py之GUI之PyQt5:PyQt5的简介、入门、安装(PyQt5Designer安装、QtCreator安装)、使用方法详细攻略

     

     

     

    目录

    PyQt5的简介

    1、Qt特点

    PyQt5入门

    1、QT中QT Widgets Application中QWidget、QDialog及QMainWindow的区别  

    PyQt5 Designer的使用方法

    一、基本用法

    PyQt5 Designer的安装

    T1、命令安装

    T2、程序安装

    QtCreator的安装

    1、图文教程


     

     

     

     

     

    PyQt5的简介

           Qt是跨平台的C++库,实现高层次的API访问的许多方面现代桌面和移动系统。这些包括定位和定位服务、多媒体、NFC和蓝牙连接、基于铬的Web浏览器以及传统的UI开发。pyqt5是一套全面的Python绑定QT V5。这是35多个扩展模块的实施使Python作为一种替代的应用程序开发语言C++在所有支持的平台包括iOS和Android。pyqt5也可以嵌入在C++应用程序允许应用程序的配置或提高这些应用程序的功能的用户。

           QtCreator(一个IDE)和QtDesigner(一个设计UI)的区别:QtCreator里集成了QtDesigner,QtCreator里有:Editor, Assistant, Designer, Debuger。因此,Qt Creator是一个IDE(只是一个开发环境而已,简单来说就是一个编写代码的地方,就像visual C++ 6.0一样。其实不用这个环境,用VS也可以的,大家有兴趣可以尝试一下),也就是一个集成开发环境,里面有代码编写器,编译器,调试器,还有图形设计器QtDesigner,有了它你可以写软件。而Qt Designer是用来设计界面的,只能设计图形,是个图形设计器!

           Qt 是一个跨平台的 C++图形用户界面库,由挪威 TrollTech 公司于1995年底出品。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP,它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。

     

    1、Qt特点

    • (1)、优良的跨平台特性:Qt支持下列操作系统: Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。
    • (2)、面向对象:Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。
    • (3)、丰富的 API:Qt 包括多达 250 个以上的 C++ 类,还提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 类。甚至还包括正则表达式的处理 功能。
    • (4)、支持 2D/3D 图形渲染,支持 OpenGL
    • (5)、大量的开发文档
    • (6)、XML 支持。


    PyQt5 Reference Guide
    PyQt:解决PyQt4升级到PyQt5改变的函数或方法

     

    PyQt5入门

    1、QT中QT Widgets Application中QWidget、QDialog及QMainWindow的区别  

          QWidget类是所有用户界面对象的基类。 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己。每一个窗口部件都是矩形的,并且它们按Z轴顺序排列。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。 
          QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围 菜单、工具条和一个状态条。QMainWindow常常被继承,因为这使得封装中央部件、菜单和工具条以及窗口状态条变得更容易,当用户点击菜单项或者工具条按钮时,槽会被调用。
          QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模态对话框也可以是非模态对话框。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。QDialog也可以有一个QSizeGrip在它的右下角,使用setSizeGripEnabled()。 
          QDialog 是最普通的顶级窗口。一个不会被嵌入到父窗口部件的窗口部件叫做顶级窗口部件。通常情况下,顶级窗口部件是有框架和标题栏的窗口(尽管使用了一定的窗口部件标记,创建顶级窗口部件时也可能没有这些装饰。)在Qt中,QMainWindow和不同的QDialog的子类是最普通的顶级窗口。

        如果是顶级对话框,那就基于QDialog创建,如果是主窗体,那就基于QMainWindow,如果不确定,或者有可能作为顶级窗体,或有可能嵌入到其他窗体中,则基于QWidget创建。

     

    参考文章
    PyQt5:PyQt5常用控件、函数、简单案例总结

    PyQt之GUI界面:基于QtGUI界面编程的控件简介、槽函数使用详细攻略

    QT中QT Widgets Application中QWidget、QDialog及QMainWindow的区别
    Qt5开发之各种按钮控件详细讲解
    Py之sip:Python库之sip的简介、安装、使用方法之详细攻略

     

     

    PyQt5 Designer的使用方法

    一、基本用法

    1、设计UI界面:导出为ui文件
    2、转为py程序:pyuic5 -o ui.py untitled.u

     

     

    PyQt5:PyQt5常用函数总结
    Qt5基本教程

    更多内容:https://pypi.python.org/pypi/PyQt5

     

    PyQt5 Designer的安装

    T1、命令安装

    pip3 install PyQt5
    pip3 install PyQt5-tools

    T2、程序安装

    下载地址:https://riverbankcomputing.com/software/pyqt/download5

     

     

    QtCreator的安装

    1、图文教程

    下载地址 http://download.qt.io/official_releases/qt/
    安装步骤如图所示


    哈哈,大功告成!

     

     

     

    展开全文
  • 这篇博文通过图文详细介绍在PyCharm中如何完整优雅地安装配置PyQt5的所有工具包,主要内容包括PyQt5PyQt5-tools的依赖包安装和Qt Designer、PyUIC、PyRcc三个工具的设置。最后简单演示了PyQt5的调用方式及三个工具...
  • ubuntu 安装pyqt5 和卸载pyQt5

    万次阅读 2019-05-26 19:17:17
    安装pyqt5 wind@wind-ThinkPad-X250:~/Downloads/PyQt5_gpl-5.12.2$ python3 -m pip install PyQt5 Collecting PyQt5 Downloading ...
  • PyQt5+Qt Designer

    万次阅读 2018-02-23 12:14:46
    1.在cmd中使用(我用的是3.6版本):pip3.6 install pyqt5 来下载PyQt5的程序 2.接下来如果发现没有designer.exe,在cmd中使用pip3.6 install PyQt5-tools 3.在D:\Program Files\python3.6\Lib\site-packages\pyqt5-...
  • 从零开始 使用PyQt5

    万次阅读 多人点赞 2018-09-04 12:26:51
    PyQt5 是用来创建Python GUI应用程序的工具包。作为一个跨平台的工具包,PyQt可以在所有主流操作系统上运行(Unix,Windows,Mac)。 本文描述Windows系统下如何安装Python + PyCharm + PyQt5,并通过PyQt5 采用 两...
  • PyQt5开发与实战视频教程

    万人学习 2018-10-23 12:11:15
    本课程属于《Python大讲堂》系列课程,全面深入讲解了PyQt5的核心API以及扩展应用。PyQt5视频培训课程的主要内容: 1. Qt Designer 2. PyQt5基本窗口控件 3. PyQt5高级组件 4. PyQt5布局管理 5. PyQt5信号与槽 ...
  • PyQt5 PyQt5-tools 安装

    千次阅读 2020-03-20 15:21:19
    分别安装PyQt5 PyQt5-tools,网上介绍的均是通过pip直接安装,但是直接安装,由于链接的境外网站,网速较慢,安装失败 可以采用清华大学镜像网站下载: pip install -i ...
  • PyQt5 教程 《PyQt5简介》

    千次阅读 2019-08-08 09:54:51
    PyQt5 tutorial 原文链接:http://zetcode.com/gui/pyqt5/ 之前一直想学习PythonGUI编程,苦于各种帖子资料零散,随决定翻译一篇资料,以达到学习的目的: 这是PyQt5教程。 本教程适合初学者和中级程序员。 阅读...
  • PyQt5介绍

    万次阅读 2017-09-13 01:42:53
    PyQt5的介绍这个是翻译的英文版的PyQt5的中文教程。这篇教程的目的是让你开始使用PyQt5组件。这个教程中的例程都已经在Linux中测试过了。关于PyQt5 PyQt5是一套绑定Qt5的应用程序框架。他在Python 2.x和3.x中都是...
  • 本课程主要针对PyQT5中的界面部分(GUI)进行学习,分为三部分,包括初级GUI编程、进阶GUI编程和GUI编程实战。 初级GUI编程:从介绍编程环境搭建开始,然后分析最基础的单个窗口框架,接着介绍QT Designer,最后...
  • Pycharm安装PyQt5pyqt5-tools从而使用Qt Designer

    万次阅读 多人点赞 2018-11-03 12:25:22
    为了制作(比较好看的)图形化界面,就得用Qt Designer,这样就要安装PyQt5pyqt5-tools。安装过程出现了各种各样的问题,现在记录下来并附上大佬们的博客Orz Pycharm安装第三方库的方法我之前写过,就是File-&...
  • python PyQt5 教程

    万次阅读 多人点赞 2019-01-19 22:39:02
    PyQt5是一套来自Digia的Qt5应用框架和Python的粘合剂。支持Python2.x和Python3.x版本。 PyQt5以一套Python模块的形式来实现功能。它包含了超过620个类,600个方法和函数。它是一个多平台的工具套件,它可以运行在...
  • 安装PyQt5 报错:from PyQt5 import QtCore

    千次阅读 2019-10-24 09:42:53
    pip uninstall pyqt5 qtpy 2、重新安装qt相关模块 conda install pyqt qtpy 3、用pip安装pyqt5 pip install pyqt5 qtpy 4、按照提示安装pyqtwebengine pip install pyqtwebengine spyder --new-ins...
  • 《快速掌握PyQt5》第一章 PyQt5的起点

    千次阅读 多人点赞 2018-09-02 18:04:34
    第一章 PyQt5的起点 1.1 开始安装PyQt5 1.2 程序运行起点 1.3 小结 1.1 开始安装PyQt5 就跟安装其他库的方法一样,非常简单: Windows上安装: pip install pyqt5 Linux上安装: sudo apt-get install ...
  • PyQt5安装(一)

    万次阅读 多人点赞 2018-07-23 08:36:10
    PyQt5安装的各种坑 使用Python开发了几个小工具,真是被Python的开发效率惊叹到了,真是人生苦短,我用Python,但是开发的时候都没有制作界面,觉得不是很完美,所有想学习一下制作界面的工具,自身带的Tk工具界面...
  • 很好的PyQt5中文教程: 《 PyQt5-Chinese-tutoral》摘要:PyQt5-Chinese-tutorialPyQt5中文教程,翻译自 zetcode,项目地址:https://github.com/maicss/PyQt5-Chinese-tutoral这个教程比较好的地方是,能讲解每一...
  • PyQt5_sip、PyQt5pyqt5_tools的版本必须要有所对应,否则将出现问题。 1)首先PyQt5是需要sip作为依赖的,使用PyQt5需要安装版本符合要求的sip,如下图所示: 可以看到PyQt5-5.14.2需要<13, >=12.7版本...
  • PyQt5笔记

    2020-01-18 11:14:46
    PyQt5笔记(01) – 创建空白窗体 PyQt5笔记(02) – 按钮点击事件 PyQt5笔记(03) – 消息框 PyQt5笔记(04) – 文本框的使用 PyQt5笔记(05) – 绝对位置 PyQt5笔记(06) – 菜单 PyQt5笔记(07) – ...
  • PyQt5的相对布局管理

    万次阅读 2020-04-10 08:58:42
    PyQt5的相对布局管理 博主PyQt5新手,最近在写一个可视化展示界面,第一个遇到的坑就是布局管理。 其实可以不用相对布局,直接用QtDesigner进行傻瓜式的拖控件也不是不可以,高级一点,也可以用绝对布局,定义控件的...
  • PyQt5入门教程

    热门讨论 2016-09-10 09:40:07
    PyQt5入门
  • pyqt5学习

    2020-02-20 15:39:52
    windows下pyqt的安装以及相关配置 开发第一个基于PyQt5的桌面应用 了解PyQt5的库结构 PyQt5程序基本结构分析
  • PyQt5pyqt5_tools安装的坑-Anaconda

    千次阅读 2019-07-31 16:52:45
    PyQt5pyqt5_tools安装的坑-Anaconda
  • pyQT5安装之后,找不到designer.exe

    万次阅读 2020-05-21 10:29:51
    pip install PyQt5-tools -ihttp://pypi.douban.com/simple--trusted-host=pypi.douban.com
  • pyqt5写界面:没有pyqt5-tools文件夹

    千次阅读 2019-05-23 10:39:24
    我安装了anaconda,里面已经安装了pyqt5,但是并没有pyqt5-tools。 PyQt5不再提供Qt Designer等工具,所以需要再安装pyqt5-tools: pip install pyqt5-tools 遇到了很多问题: 最后给出了问题: 网上说,...
  • 数据库实验PyTt5安装 PyTt5安装 pip install PyQt5 Qt Designer 在 Python3.5 版本从 PyQt5 转移到了 tools,因此还需要安装 pyqt5-tools pip install pyqt5-tools
  •     ...学习了pyqt5后,总想弄些有趣点的, 然后就想起了弄一个小游戏, 弄一个简单的小游戏, 然后就用pyqt5写了一个俄罗斯方块的小游戏 开发环境 windows 10 python3.8x 游戏思路
  • PyQt5自学攻略

    万次阅读 多人点赞 2018-09-03 12:42:42
    PyQt5简介 PyQt是QT框架的Python语言实现,存在有PyQt3,PyQt4,PyQt5三个版本。PyQt5已经于之前的版本有较大的区别,建议直接学习PyQt5就可以了。官方网站:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,091
精华内容 10,436
关键字:

pyqt5