精华内容
参与话题
问答
  • 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项目点个星呗(手动滑稽)。

    展开全文
  • 从零开始 使用PyQt5

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

     PyQt5 是用来创建Python GUI应用程序的工具包。作为一个跨平台的工具包,PyQt可以在所有主流操作系统上运行(Unix,Windows,Mac)。

    本文描述Windows系统下如何安装Python + PyCharm + PyQt5,并通过PyQt5 采用 两种方式设计GUI界面。a.直接使用代码设计界面;b. 先使用QtDesigner进行可视化设计,然后将生成的.ui文件转换成.py文件。

     

    安装Python + PyCharm + PyQt5

    1、安装Python

    访问官网https://www.python.org/,下载并安装你的目标Python版本。

     

    2、安装PyQt5

    1)进入cmd界面。执行命令 pip install pyqt5 pyqt5-tools ,等待一会儿,命令执行完毕后PyQt5就安装好了。

    在安装过程中可能会报下面错误,找不到对应的pyqt5-tools版本。

      Collecting pyqt5-tools
      Could not find a version that satisfies the requirement pyqt5-tools (from versions: )
    No matching distribution found for pyqt5-tools

    由于作者电脑上原来安装了2016年某个版本的python3.5 ,幸运的把pip install pyqt5 pyqt5-tools 一次执行完毕,全部安装完了。不过后来更新到python3.5.4和python3.7时都遇到了这个问题。python3.5.4在更新PIP到最新版本后,问题貌似也消失了。python3.7没有再去解决。

    2)在python 自带的IDLE中试验一下pqyt5是否真的装好了。

    新建文件 firstPython.py 并输入如下代码

    #####################################

    import sys  
      
    from PyQt5 import QtWidgets, QtCore  
      
    app = QtWidgets.QApplication(sys.argv)  
    widget = QtWidgets.QWidget()  
    widget.resize(400, 100)  
    widget.setWindowTitle("This is a demo for PyQt Widget.")  
    widget.show()  
      
    exit(app.exec_()) 

    #####################################

    运行后弹出如下界面,表示PyQt已经正常工作啦。

    如果不幸没有弹出GUI窗口,而且提示错误:ImportError: DLL load failed: 找不到指定的模块。

    据说这是由于缺少了合适的python3.dll,可以通过去python.org 下载所需版本的python安装包并安装,然后从安装目录中拷贝python3.dll文件,和自己使用的python3x.dll放在同一级目录下即可。

    作者自己原来安装的python3.5就是挂在了这一步,然后直接删了重新安装python3.5.4,又遇到了上面1)的问题。升级pip版本后莫名过关。建议大家按照上面建议的解决方式操作。

    3、安装PyCharm

    1)访问官网http://www.jetbrains.com/pycharm/download/#section=windows  作者选择下载并安装Community版本 ——目前是PyCharm 2018.2.2 Community Edition。

     

    2)PyCharm 基本配置:

    a. 建立一个新项目:first。 

    b.设置默认PyCharm解析器

    选择File | Settings | Project: first | Project Interpreter,设置 Project Interpreter为你使用的python版本

    例如 C:\xxxx\AppData\Local\Programs\Python\Python35-32\python.exe

    c. 添加第三方库 

     停留在 Project Interpreter 界面,点击+,查找并安装 pyqt5,pyqt5-sip ,pyqt5-tools 。安装成功后返回,界面应该如下。

    d.配置PyQt

    PyCharm中选择File | Settings | Tools | External Tools,点击+ 新建工具, 建立QTdesigner 和 PyUIC工具

    QTdesigner:

    配置两个关键参数:

    Program:自己的designer.exe路径 例如 C:\xxxx\AppData\Local\Programs\Python\Python35-32\Lib\site-packages\pyqt5-tools\designer.exe  

    Working directory:$ProjectFileDir$

     

    PyUIC:

    配置三个关键参数:

    Program:自己的python.exe路径 例如 C:\xxxx\AppData\Local\Programs\Python\Python35-32\python.exe

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

    Working directory:$ProjectFileDir$

     

    工具建立成功后返回ExternalTools界面,如下:

    返回主界面,Tools->ExternalTools 中新增了QTdesigner 和 PyUIC两个工具

     

    4、PyCharm中通过PyQt5设计GUI界面

    1)利用代码创建GUI界面

    新建firstGUI.py,输入如下代码

    # -*- coding: utf-8 -*-
    """第一个程序"""
    
    from PyQt5 import QtWidgets   # 导入PyQt5部件
    
    import sys
    
    app = QtWidgets.QApplication(sys.argv)  # 建立application对象
    
    first_window = QtWidgets.QWidget()  # 建立窗体对象
    
    first_window.resize(400, 300)  # 设置窗体大小
    
    first_window.setWindowTitle("我的第一个pyqt程序")  # 设置窗体标题
    
    first_window.show()  # 显示窗体
    
    sys.exit(app.exec())  # 运行程序

    ###############################################################

    选择Run->Run firstGUI,结果显示如下界面就成功了。

     

    2)利用QT Designer代码生成一个GUI界面 ,并用PyUIC转换为.py文件。

    选择Tools->ExternalTools->QTdesigner,进入QT Designer界面,第一次会弹出一个GUI创建界面,点击creat 自动生成一个带下方按钮的GUI界面,如下图。

    另存该界面为Utitled.ui文件。

    返回PyCharm 项目界面,项目列表下多出了这个.ui文件

    右键单击Utitled.ui,弹出列表中选择ExternalTools->PyUIC 就会生成Utitled.ui对应的Utitled.py文件了。内容如下

    # -*- coding: utf-8 -*-
    
    # Form implementation generated from reading ui file 'untitled.ui'
    #
    # Created by: PyQt5 UI code generator 5.11.2
    #
    # WARNING! All changes made in this file will be lost!
    
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    class Ui_Dialog(object):
        def setupUi(self, Dialog):
            Dialog.setObjectName("Dialog")
            Dialog.resize(400, 300)
            self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
            self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32))
            self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
            self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
            self.buttonBox.setObjectName("buttonBox")
    
            self.retranslateUi(Dialog)
            self.buttonBox.accepted.connect(Dialog.accept)
            self.buttonBox.rejected.connect(Dialog.reject)
            QtCore.QMetaObject.connectSlotsByName(Dialog)
    
        def retranslateUi(self, Dialog):
            _translate = QtCore.QCoreApplication.translate
            Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
    #############################################################################

    That's All .Thankyou~

     

     

     

     

    展开全文
  • 本书共分四个部分:第一部分主要讲述Python基础知识,第二部分通过三个例子给出PyQt GUI应用程序的初步印象,第三部分深入讲述窗口部件布局、事件处理、窗口部件子类化、Qt图形架构和Qt的模型/视图等内容,第四部分...
  • Python - 编写可视化界面(Python+PyCharm+PyQt

    万次阅读 多人点赞 2018-02-11 15:19:18
    Python编写可视化界面 最近开始学习Python,但只限于看理论,编几行代码,觉得没有意思,就想能不能用Python编写可视化的界面。... PyQt的版本需要与Python的版本保持一致,在这里我用的PyQT的版本是PyQt5-5.6-gp...

        最近开始学习Python,但只限于看理论,编几行代码,觉得没有意思,就想能不能用Python编写可视化的界面。遂查找了相关资料,发现了PyQt,由于前一段时间刚看过Qt,而且对Qt的印象很好,于是觉得用PyQt应该是一个比较愉快的选择。

    1、前言

        PyQt的版本需要与Python的版本保持一致,在这里我用的PyQT的版本是 PyQt5-5.6-gpl-Py3.5-Qt5.6.0-x64.exe,具体下载方式,请直接搜索。由于该版本需要v3.5版本的Python,所以首先需要安装Python3.5,然后安装PyQt,为了更加方便的写代码,故安装了Pycharm,版本为pycharm-community-2017.3.2.exe。具体的下载、安装,网上有很多教程,在这里就不多做描述,请自行搜索,下面就先介绍基于Pycharm+Python3.5+PyQt5.6的Python可视化编程。文末还会介绍一下基于最新版本的Pycharm2018.3+Python3.7+PyQt5.11的Python可视化编程。

    2、开始

    1)、打开PyCharm并配置相关设置

        打开PyCharm界面如下:

        点击界面右下方的“Configure”下拉按钮,选择“Settings”,如下所示:

        打开如下设置界面:

        如上图所示,在“Project Interpreter”选显卡中选择本机所安装的Python版本,一般情况下,它会自动识别本机所安装的Python版本,如图所示,选择的为Python3.5;

        配置完成之后,点击“OK”,返回开始界面,

        选择“Create New Project”,选择工程路径和工程的名称,然后点击"Create",然后弹出如下界面:

        此时,工作环境已准备完毕;

    3、编写

    1)、首先,创建一个.py文件,暂命名为PyQt.py

    2)、其次,需要导入PyQt的文件如下所示:

    import sys
    from PyQt5.QtWidgets import QWidget, QApplication

    注意,如果提示找不到对应文件,请确保PyQt5的安装路径在环境变量中!

    然后先添加主函数:

    if __name__ == "__main__":
        app = QApplication(sys.argv)
        sys.exit(app.exec_())

    接下来就需要添加界面相关函数:

    #class Example
    class Example(QWidget):
        def __init__(self):
            super(Example, self).__init__()
            self.InitUI()
    
        def InitUI(self):
            self.btn = QPushButton("Dialog", self)
            self.btn.move(20, 20)
            self.btn.clicked.connect(self.ShowDialog)
    
            self.le = QLineEdit(self)
            self.le.move(130, 22)
    
            self.setWindowTitle("Input Dialog")
            self.show()
    
        def ShowDialog(self):
            text,ok = QInputDialog.getText(self, "Input Dialog", "Enter your name:")
            if ok:
                self.le.setText(str(text))

    如上代码所示,在Python中主要是通过类来生成界面的,在类中,可以进行界面的生成,控件的创建,创建控件的响应函数,connect控件与控件响应函数。

    其中函数 __init__(self) 可以理解为该类的构造函数,其中界面的初始化在该部分执行;

    函数 InitUI(self) 主要是生成界面控件;

    当类创建完成后,只需要在主函数中调用该类即可。如下所示:

    if __name__ == "__main__":
        app = QApplication(sys.argv)
        ex = Example()
        sys.exit(app.exec_())

    在以上的代码中,主要是在界面中添加了一个按钮(btn),一个编辑框(le),一个按钮响应函数(ShowDialog),其中在ShowDialog响应函数中打开了一个标准输入窗口,并将标准输入窗口中输入的值显示到编辑框(le)中。
      

    结果:

    4、扩展

        在接下来做了一个更加复杂的例子,主要是模拟汇率的解算,界面主要如下所示:

    其中主要涉及了按钮、编辑框、Label、布局等 ,

    与第一个例子写在了同一个文件中,可点击一下链接下载:

    http://download.csdn.net/download/bailang_zhizun/10249579

    5、最新版本配置方法

    采用最新版本的Python、PyQt、Pycharm配置可视化编程环境。

    首先先安装Python3.7,然后安装Pycharm2018.3,并配置python解释器为Python3.7的本地目录,接下来就是安装PyQt5.11。

    安装PyQt5.11是采用pip+wheel文件安装的形式,下载网址:https://pypi.org/project/PyQt5/#files

    关于pip的安装请参考https://blog.csdn.net/bailang_zhizun/article/details/84563095

    把下载的PyQt5-5.11.3-5.11.2-cp35.cp36.cp37.cp38-none-win_amd64.whl文件放置到合适的位置。

    打开CMD,按照以下形式输入安装命令:

    回车,pip就会自动安装该文件了:

    此时PyQt5.11就安装成功了。

    可以通过以上的代码进行测试。

    6、Ubuntu下python2.7安装pyqt5

    上面记录的都是在windows+python3环境下pyqt5的安装。由于工作需要,需要在Ubuntu+python2.7环境下安装pyqt5,根据pyqt5的官网,pyqt5只有针对python3的安装包,而没有python2.7的,所以可以通过在线安装的方式安装,下面是Ubuntu+python2.7环境下pyqt5的安装:

    在ubuntu中打开终端,直接输入:

    $sudo apt-get install python-pyqt5

    即可,安装完成之后,直接在代码编辑页面import PyQt5即可,亲测可用。

    另外,上面这种方式好像还可以用于ubuntu+python3环境下pyqt5的安装,也是通过命令安装:

    $sudo apt-get install python3-pyqt5

    上面未经测试,但是应该没问题。

     

    展开全文
  • 将ui格式的文件转化为py的Python文件 pyuic5 -o srs.py srs1.0.ui

    最近想学习利用Python进行GUI的设计,网上找了很多教程与方法,用的最多的是使用PyQt+Python就进行开发,同时利用PyQt做出来的界面也是相对而言较为方便且比较美观。

    所以自己在闲暇之余,也学习了使用PyQt5+Python进行图形界面的设计,并开发一款属于自己的小软件。

    第一篇博客将主要说明如何利用PyQt5进行界面设计,并转化成.py格式的文件。本文的Python版本是Python3.5,通过Anoconda安装的。


    安装PyQt5与Qt Designer

    PyQt5

    通常只要安装了Anoconda,就会默认装好PyQt5,检验的方法很简单。只需在你的Python里面输入import PyQt5没有报错就可以了。没有的话直接在命令行窗口(Win+R,然后输入cmd)输入pip install PyQt5进行安装即可。(使用国内的源则可用如下的命令:pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple,可参考:pip(国内镜像)快速安装Python库

    Qt Designer

    Qt Designer是用来设计界面的,可以让用户在极短的时间里创建一个图形化用户界面的图形设计器。利用 Qt Designer,我们可以通过拖拉或点击的方式,在窗口的适当位置上添加一些输入框和按钮等窗口组件构造图形用户界面,并可预览效果。其界面如下:
    这里写图片描述

    左侧就是控件,右侧是每个控件中的一些属性,可以进行修改。

    通常在我们安装完Anoconda后,只有PyQt5库,点进去没有Qt Designer,具体可以查看Anoconda的路径(例如:C:\Users\用户\Anaconda3\Lib\site-packages\PyQt5)。

    所以如果我们想要使用Qt Designer则需要使用pip进行安装(不需要重新装几个G的Qt Creator)。我们需要打开命令行输入如下命令即可:

    pip install PyQt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple

    然后我们再去Python库的路径下(C:\Users\用户\Anaconda3\Lib\site-packages),找到pyqt5-tools文件夹,里面就有designer.exe,双击进入即可。



    设计自己想要的界面

    然后就可以开始设计以及想要的界面了。我的目标是创建一个针对文件转换的小软件,也就是需要有一个输入文件路径,输出文件夹路径,确认以及取消几个按键组成,其最终效果如下:


    这里写图片描述

    其制作的方法其实非常简单,将左边的需要的内容一个一个往中间拖动即可,其实不需要排列太整齐,只需要大致的排成下图所示的样子即可:


    这里写图片描述

    然后全选,右键,选择Lay outLay out in a Grid就会自动排列整齐。(或者快捷键Ctrl+5


    然后你也可以拖动,或者添加一些内容变成你想要的格式。

    对于每一个控件,右侧都会有其对应的属性,通过修改里面的内容,就可对控件进行修改,包括文字大小、颜色、背景颜色、对象名称等等。
    这里写图片描述

    我们需要注意的是objectName,建议不要用默认的名称,而是修改成按钮的实际作用的英文名称。如果用默认的名称,需要记住左侧每一个元素以及与其对应的名称是什么,这在后面使用Python对其后端进行编程时需要用到。例如上图中所示的就是pushButton_2

    在我们设计完成这样一个界面时候,直接将其保存,这样就可以得到一个.ui的文件。但这还不够,因为我们想使用Python进行程序的编写,所以还需要将其转换为.py格式的文件才行。


    将.ui的文件转换为.py的文件

    我们想修改文件的格式,当然不是仅仅只是将后缀进行修改就可以。而是需要在命令行中输入下述的命令,才可将srs1.0.ui文件转换成srs.py文件,而里面的代码也会变为Python的代码。

    pyuic5 -o srs.py srs1.0.ui

    注意,需要转换的时候需要首先cd到储存srs1.0.ui文件的路径(例如将上面代码中的srs1.0.ui变为D:\Desktop\srs1.0.ui),或者还有一种方法不需要手动输入路径,直接输入上述命令即可。就是我们不用传统方式打开命令行,而是在文件存储的文件夹下打开Windows PowerShell,方式如下图所示:先文件夹形式打开桌面,然后点上面的文件,再选择Windows PowerShell


    这里写图片描述

    打开的界面如下所示,然后再输入pyuic5 -o srs.py srs1.0.ui即可转为文件名为srs.py.py文件。
    这里写图片描述


    后面我们就要为实现界面所示按钮的功能而奋斗了!具体实现在Python制作小软件——2. 实现界面中的退出功能进行了介绍~

    展开全文
  • PyQt5_tutorial

    2017-08-16 17:26:21
    pyqt5官方教程
  • PyQt5介绍

    万次阅读 2017-09-13 01:42:53
    PyQt5的介绍这个是翻译的英文版的PyQt5的中文教程。这篇教程的目的是让你开始使用PyQt5组件。这个教程中的例程都已经在Linux中测试过了。关于PyQt5 PyQt5是一套绑定Qt5的应用程序框架。他在Python 2.x和3.x中都是...
  • PyQt5入门教程

    热门讨论 2016-09-10 09:40:07
    PyQt5入门
  • Qt 和 PyQt

    万次阅读 2018-11-05 14:56:53
    用于 Python 的高级 GUI 库 一般来说,选择用于应用程序的 GUI 工具箱会是一件棘手的事。使用 Python(许多语言也一样)的程序员可以选择的 GUI 工具箱种类繁多,而每个工具箱都有各自的优缺点。...
  • PyQt5安装(一)

    万次阅读 多人点赞 2018-07-23 08:36:10
    PyQt5安装的各种坑 使用Python开发了几个小工具,真是被Python的开发效率惊叹到了,真是人生苦短,我用Python,但是开发的时候都没有制作界面,觉得不是很完美,所有想学习一下制作界面的工具,自身带的Tk工具界面...
  • Pyqt5 入门教程例子

    2018-02-26 19:30:00
    pyqt5&python; Gui入门教程,本人的教程比较基础,所用方法不够亮骚,仅供新手入门,若大家有更好的方法不胜赐教!
  • PyQT5速成教程-2 Qt Designer介绍与入门

    万次阅读 2018-06-04 20:30:39
    PyQt中编写UI界面可以直接通过代码来实现,也可以通过Qt Designer来完成。Qt Designer的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷。Qt Designer中的操作方式十分灵活,其通过拖拽的方式...
  • PyQt5教程(一)

    万次阅读 多人点赞 2016-08-05 20:19:09
    在这部分教程中我们将学习PyQt5的一些基本功能一个简单的例子这是一个只显示一个小窗口的简单示例。但我们可以对这个窗口进行一些操作,如调整尺寸,最大化或最小化。这需要编写很多代码,但有人已经完成了这个功能...
  • python pyqt5 gui 入门教程 干货 ,新手必备,pyqt5 GUI开发教程,详细介绍了基本的程序结构和细小知识点。
  • PyQt5自学攻略

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

    2018-09-08 22:42:05
    pyqt5-python-Gui的入门教材,讲的非常简单易懂,建议学QT的初学者学习!
  • pyqt5中文教程,以图形和源代码的方式讲解基础技术。文档为PDF 格式。
  • PyQt5新手入门视频教程

    千次阅读 2019-04-14 16:39:36
    PyQt5新手入门视频教程 凭借“快速开发”这点优势,PyQt5越来越被大家所熟知,使用范围也越来越广。无论是工作项目还是作业要求,PyQt5都能让我们做到事半功倍。 笔者所写的《快速掌握PyQt5》系列文章就是带...
  • QT5 pyQT5环境搭建和教程

    千次阅读 2018-12-14 19:58:30
    之前搭QT5以及找到不错的pyqt5教程,以下内容转自别处,点击链接查看原出处: vs2017 下QT5 搭建 https://blog.csdn.net/qq_35451572/article/details/79649641... 博客园的QT5教程: ... 鱼C论坛的pyQT5教程: htt...
  • 0. 废话不是CS专业,从来没做过界面,入职就被分配了写一个上位机的工作。幸亏读master的时候被操练得...开始的时候,决定用PyQt 5 + Python 3,因为感觉比C++开发速度快。新需求完成后,就决定继续把旧的功能移植...
  • python3.6.8 + pycharm + PyQt5 环境搭建的图文教程更多python视频教程请到菜鸟教程https://www.piaodoo.com/ 首先安装python3.6.8解释器和PyCharm软件,这篇文章假设你以及安装好啦。 其次安装pyQT5,我...
  • from PyQt5.QtWidgets import QApplication, QDialog,QWidget, QVBoxLayout from PyQt5.QtGui import QPainter, QColor, QBrush, QPen, QPalette class myWidget(QWidget): def __init__(self): super().__init...
  • PyQt5开发学习(一)--在Pycharm使用PyQt5

    千次阅读 2019-01-27 01:26:01
    安装PyQt5 PyCharm对每个工程,都有独立的系统环境,工程需要的每个库,都可以安装在工程目录下,而不是安装在系统目录下。 如果安装太慢,可以更改PIP的源,如下: 清华: ...
  • 在PyCharm中使用PyQt5

    千次阅读 2019-05-06 08:45:19
    1、安装Python并配置环境变量,我的Python版本是3.6.4。 2、下载符合自己操作系统的PyCharm,这里在Windows下...3、使用命令行安装PyQt5PyQt5-tools。 可以通过如下命令更新pip: python -m pip install -...
  • 这篇博文通过图文详细介绍在PyCharm中如何完整优雅地安装配置PyQt5的所有工具包,主要内容包括PyQt5PyQt5-tools的依赖包安装和Qt Designer、PyUIC、PyRcc三个工具的设置。最后简单演示了PyQt5的调用方式及三个工具...
  • pyQt5 pyQt5

    热门讨论 2013-07-12 07:25:09
    PyQt5-5.0-gpl-Py3.3-Qt5.0.2-x32.exe
  • PyQt5快速开发与实战pdf

    万次阅读 多人点赞 2019-04-22 00:24:50
    第1章 认识PyQt 5 1 1.1 PyQt框架简介 1 1.1.1 PyQt 5的特点 3 1.1.2 Qt与PyQt的关系 4 1.1.3 其他图形界面开发库介绍 4 1.1.4 PyQt 4/PyQt 5 6 1.1.5 Python 2/Python 3 6 1.2 PyQt 5环境搭建 7 1.2.1 在Windows...
  • 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 ...
  • pyqt5pyqt5-sip

    2020-05-13 12:02:46
    PyQt5Pyqt5-sip直接下载太慢了。。。。,所以自己下载了下来 输入pip install 文件>安装
  • pyqt5美化界面

    万次阅读 多人点赞 2019-03-12 21:14:50
    qt做界面很方便,但是一般做出来都不是很好看,需要去美化。 这是效果图 是一个做语音识别的小界面。虽然是一个小界面,但是通过这个小界面的美化方法,能够了解类推制作其他的精美界面。 第一步 制作初始界面 ...

空空如也

1 2 3 4 5 ... 20
收藏数 50,977
精华内容 20,390
关键字:

PyQt