精华内容
下载资源
问答
  • 主要介绍了python使用PyQt5的简单方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 主要介绍了Python 使用 PyQt5 开发的关机小工具分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 本篇文章主要介绍了python使用pyqt写带界面工具的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 今天小编就为大家分享一篇Python 使用PyQt5 完成选择文件或目录的对话框方法。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了Python使用Pyqt5实现简易浏览器(最新版本测试过),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 前段时间看了下pyqt5,还写了个计算器玩玩,python使用pyqt5制作计算器,前面也写过一个成语接龙的小程序,自制成语接龙。就想着把他俩结合一下,做个有界面的成语接龙玩玩。 代码如下: 首先是chengyu.py,这个文件...

    前段时间看了下pyqt5,还写了个计算器玩玩,python使用pyqt5制作计算器,前面也写过一个成语接龙的小程序,自制成语接龙。就想着把他俩结合一下,做个有界面的成语接龙玩玩。

    代码如下:
    首先是chengyu.py,这个文件是界面文件(chengyu.ui)转出来的,看我上篇[python使用pyqt5制作计算器]这篇文章就知道怎么弄得了,不想知道怎么弄也没关系,直接创建一个chengyu.py文件把我代码粘上去就好了,没有chengyu.ui文件也能跑通代码

    # -*- coding: utf-8 -*-
    
    # Form implementation generated from reading ui file 'chengyu.ui'
    #
    # Created by: PyQt5 UI code generator 5.13.0
    #
    # WARNING! All changes made in this file will be lost!
    
    
    from PyQt5 import QtCore, QtGui, QtWidgets
    
    
    class Ui_MainWindow(object):
        def setupUi(self, MainWindow):
            MainWindow.setObjectName("MainWindow")
            MainWindow.resize(570, 537)
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
            MainWindow.setSizePolicy(sizePolicy)
            self.centralwidget = QtWidgets.QWidget(MainWindow)
            self.centralwidget.setObjectName("centralwidget")
            self.label = QtWidgets.QLabel(self.centralwidget)
            self.label.setGeometry(QtCore.QRect(200, 10, 121, 51))
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
            self.label.setSizePolicy(sizePolicy)
            font = QtGui.QFont()
            font.setPointSize(15)
            self.label.setFont(font)
            self.label.setObjectName("label")
            self.lineEdit_2_zhurenjie = QtWidgets.QLineEdit(self.centralwidget)
            self.lineEdit_2_zhurenjie.setGeometry(QtCore.QRect(10, 249, 121, 41))
            self.lineEdit_2_zhurenjie.setObjectName("lineEdit_2_zhurenjie")
            self.pushButton = QtWidgets.QPushButton(self.centralwidget)
            self.pushButton.setGeometry(QtCore.QRect(150, 250, 75, 41))
            self.pushButton.setObjectName("pushButton")
            self.label_2 = QtWidgets.QLabel(self.centralwidget)
            self.label_2.setGeometry(QtCore.QRect(10, 60, 541, 131))
            font = QtGui.QFont()
            font.setPointSize(11)
            self.label_2.setFont(font)
            self.label_2.setObjectName("label_2")
            self.label_3_qingkuang = QtWidgets.QLabel(self.centralwidget)
            self.label_3_qingkuang.setGeometry(QtCore.QRect(10, 370, 521, 31))
            sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
            sizePolicy.setHorizontalStretch(0)
            sizePolicy.setVerticalStretch(0)
            sizePolicy.setHeightForWidth(self.label_3_qingkuang.sizePolicy().hasHeightForWidth())
            self.label_3_qingkuang.setSizePolicy(sizePolicy)
            self.label_3_qingkuang.setText("")
            self.label_3_qingkuang.setObjectName("label_3_qingkuang")
            self.label_3_diannaojie = QtWidgets.QLabel(self.centralwidget)
            self.label_3_diannaojie.setGeometry(QtCore.QRect(150, 360, 401, 20))
            self.label_3_diannaojie.setText("")
            self.label_3_diannaojie.setObjectName("label_3_diannaojie")
            self.label_4_first_random = QtWidgets.QLabel(self.centralwidget)
            self.label_4_first_random.setGeometry(QtCore.QRect(20, 210, 511, 31))
            self.label_4_first_random.setText("")
            self.label_4_first_random.setObjectName("label_4_first_random")
            self.label_5_diannaojie = QtWidgets.QLabel(self.centralwidget)
            self.label_5_diannaojie.setGeometry(QtCore.QRect(10, 300, 511, 41))
            self.label_5_diannaojie.setText("")
            self.label_5_diannaojie.setObjectName("label_5_diannaojie")
            # MainWindow.setCentralWidget(self.centralwidget)
            self.menubar = QtWidgets.QMenuBar(MainWindow)
            self.menubar.setGeometry(QtCore.QRect(0, 0, 570, 23))
            self.menubar.setObjectName("menubar")
            # MainWindow.setMenuBar(self.menubar)
            self.statusbar = QtWidgets.QStatusBar(MainWindow)
            self.statusbar.setObjectName("statusbar")
            # MainWindow.setStatusBar(self.statusbar)
    
            self.retranslateUi(MainWindow)
            QtCore.QMetaObject.connectSlotsByName(MainWindow)
    
        def retranslateUi(self, MainWindow):
            _translate = QtCore.QCoreApplication.translate
            MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
            self.label.setText(_translate("MainWindow", "成语接龙游戏"))
            self.pushButton.setText(_translate("MainWindow", "确定"))
            self.label_2.setText(_translate("MainWindow", "成语接龙游戏,请接成语或俗语,接的第一个字要跟上面的成语最后一个字相同哦\n"
    "\n"
    "当你不想玩的时候可以输入\"退出\"结束\n"
    "\n"
    "当你玩不过我的时候可以输入\"我认输\"也可以结束游戏,哈哈哈哈"))
    
    

    接下来是chengyujielong.py文件:
    这个脚本需要chengyu.txt,文件里面放的都是成语,爬虫代码

    chengyujielong.py:

    import random
    def get_list():
        with open("chengyu.txt", "r+", encoding="utf-8") as f:
            content = f.read()
            url_list = content[:-1].split(',')
        return url_list
    
    def get_first_word(url_list):
        randoms=random.choice(url_list)
        randoms='我先说一个:'+randoms
        return randoms
    
    def jiqijie(url_list,zhuren):
        chengyus=[]
        for url in url_list:
            if url[0]==zhuren[-1]:
                chengyus.append(url)
        a=random.choice(chengyus)
    
        return a
    

    那么最后就是run.py文件了:

    # -*- coding: utf-8 -*-
    # @Author   : LiMengDi
    # @FILE     : run.py.py
    # @Time     : 2019/11/28 14:43
    # @Software : PyCharm
    import sys
    from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
    from chengyu import Ui_MainWindow
    from chengyujielong import get_list,get_first_word,jiqijie
    
    class mwindow(QWidget, Ui_MainWindow):
        def __init__(self):
            super(mwindow, self).__init__()
            self.setupUi(self)
            self.url_list = get_list()
            self.randoms = get_first_word(self.url_list)
    
        def main_s(self):
            self.randoms_first(self.randoms)
            self.pushButton.clicked.connect(self.get_zhurenjie)
    
        def randoms_first(self,randoms):
            self.label_4_first_random.setText(randoms)
    
        def get_zhurenjie(self):
            text=self.lineEdit_2_zhurenjie.text()
            self.lineEdit_2_zhurenjie.clear()
            if text=='退出':
                app.quit()
            if text == '我认输':
                app.quit()
            if text not in self.url_list:
                self.label_3_qingkuang.setText('耍赖,这不是个成语或俗语,重新说')
            elif text[0] != self.randoms[-1]:
                self.label_3_qingkuang.clear()
                self.label_3_qingkuang.setText('耍赖,你没有接最后一个字,最后一个字是:{}'.format(str(self.randoms[-1])))
            else:
                self.label_3_qingkuang.clear()
                try:
                    jiqi = jiqijie(self.url_list, text)
                    self.randoms=jiqi
                    self.label_4_first_random.clear()
                    self.label_3_diannaojie.setText('俺接:{}'.format(str(jiqi)))
                except:
                    self.label_3_qingkuang.setText('俺接不出来,你赢了!')
    
    if __name__ == '__main__':
    
        app = QApplication(sys.argv)
        w = mwindow()
        w.show()
        w.main_s()
        sys.exit(app.exec_())
    

    这是我的文件摆放:
    在这里插入图片描述
    文件就这些,放好后就可以运行run.py文件了,老规矩,看效果:
    运行之后出来这个界面
    在这里插入图片描述
    接下来我们在输入框里瞎填点东西,点确定,看他反应:
    在这里插入图片描述
    点击确定之后:
    在这里插入图片描述
    嘿,蒙不住,那咱们给他填个成语,看效果:
    在这里插入图片描述
    点击确定:
    在这里插入图片描述
    嘿嘿,看来只能拿出我的真正实力了,接就接,发动我的脑筋,拿出杀手锏接它,不就是正开头的嘛
    在这里插入图片描述
    嘿嘿嗝,,咱接个正大光明,然后点击确定,看效果:
    在这里插入图片描述
    继续,继续搞它
    在这里插入图片描述
    填个法力无边点确定:
    在这里插入图片描述
    好吧,它也是有些实力的,于是经过我使用我深厚的文学功底与它大战一万八千六百回合之后:
    在这里插入图片描述
    哈哈哈哈,跟我斗。。

    这个游戏结束也很简单,界面上写的规则也有
    在这里插入图片描述
    你可以在输入框输入“退出”,或者“我认输”,程序就结束了

    另外,这个程序的成语都是自己爬取的,不可能把所有成语都爬全,然而判断是根据这些成语作出的,所以有时候你填个成语,它说你填的不是成语,可能只是它本身没有收录这个成语而已,游戏而已,不用当真

    好了,今天的程序就玩到这,好好学习,天天向上

    展开全文
  • Python 使用 PyQt4 自定义对话框1. 相关库的导入2. 对话框的创建3. 类的实例化4. 具体效果 欢迎学习交流: zengf.hou@bit.edu.cn https://www.jianshu.com/p/7b5a40bb74fb 在使用 PyQt 进行操作时,内置的窗口往往不...

    欢迎学习交流!
    个人网站:https://zephyrhours.github.io/
    邮箱:zengf.hou@bit.edu.cn

    在使用 PyQt 进行操作时,内置的窗口往往不能满足我们的需求,所以有时候我们需要自定义一个对话框来满足我们的需要。

    1. 相关库的导入

    在使用前先导入需要用到的库,具体代码如下:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    from __future__ import division
    import numpy as np
    from PyQt4 import QtGui, QtCore
    

    2. 对话框的创建

    在导入需要的库完成后,接下来就是我们需要自定义一个类,来创建我们需要的对话窗口,具体代码如下:

    class MultiInPutDialog(QtGui.QDialog):
        def __init__(self, parent=None):
            QtGui.QDialog.__init__(self, parent)
            self.resize(100, 80)
            self.setWindowTitle('Input')
            self.setWindowIcon(QtGui.QIcon('td.png'))
    
            grid = QtGui.QGridLayout()
            grid.addWidget(QtGui.QLabel('Data Rows:', parent=self), 0, 0, 1, 1)
            self.num_R = QtGui.QLineEdit(parent=self)
            grid.addWidget(self.num_R,0, 1, 1, 1)
    
            grid.addWidget(QtGui.QLabel('Data Cols:', parent=self), 1, 0, 1, 1)
            self.num_C = QtGui.QLineEdit(parent=self)
            grid.addWidget(self.num_C, 1, 1, 1, 1)
    
            buttonBox = QtGui.QDialogButtonBox(parent=self)
            buttonBox.setOrientation(QtCore.Qt.Horizontal)  # 设置为水平方向
            buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Ok)  # 确定和取消两个按钮
    
            buttonBox.accepted.connect(self.accept)  # 确定
            buttonBox.rejected.connect(self.reject)  # 取消
    
            layout = QtGui.QVBoxLayout()
            layout.addLayout(grid)
    
            spacerItem = QtGui.QSpacerItem(20, 48, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
            layout.addItem(spacerItem)
            layout.addWidget(buttonBox)
            self.setLayout(layout)
    
        # -------------------Close Event Method----------------------
        def closeEvent(self, event):
            reply = QtGui.QMessageBox.question(self, 'Close Message',
                                           "Are you sure to quit?", QtGui.QMessageBox.Yes |
                                           QtGui.QMessageBox.No, QtGui.QMessageBox.No)
            if reply == QtGui.QMessageBox.Yes:
                event.accept()
            else:
                event.ignore()
    

    3. 类的实例化

    OK,上面就创建好了我们需要的窗口,在使用时,需要先将类进行实例化,具体代码如下:

    app = QtGui.QApplication([])
    dialog = MultiInPutDialog()
     if dialog.exec_():
        hs=int(dialog.num_R.text())
        ls=int(dialog.num_C.text())
    
    print hs
    print ls
    

    4. 具体效果

    运行山面代码,具体效果如下:
    在这里插入图片描述
    当我们点击OK按钮之后,在运行窗口如下:
    在这里插入图片描述

    注:其他关于对话框的操作,请参考PyQt4的官方文档
    https://www.riverbankcomputing.com/static/Docs/PyQt4/

    展开全文
  • python 使用PyQt5

    2019-02-26 06:43:45
    二:PyQt5简单使用1:使用PyQt5创建一个简单窗口 import sys from PyQt5 import QtWidgets #创建一个应用(Application)对象,sys.argv参数是一个来自命令行的参数列表, # Python脚本可以在shell中运行。这是我...
        

    一:安装PyQt5

    pip install pyqt5
    

    二:PyQt5简单使用
    1:使用PyQt5创建一个简单窗口

    import sys
    from PyQt5 import QtWidgets
    #创建一个应用(Application)对象,sys.argv参数是一个来自命令行的参数列表,
    # Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。
    app = QtWidgets.QApplication(sys.argv)
    #创建一个widget组件基础类
    windows = QtWidgets.QWidget()
    #设置widget组件的大小(w,h)
    windows.resize(500,500)
    #设置widget组件的位置(x,y)
    windows.move(100,100)
    """
    #设置widget组件的位置居中
    qr = windows.frameGeometry()
    cp = QtWidgets.QDesktopWidget().availableGeometry().center()
    qr.moveCenter(cp)
    windows.move(qr.topLeft())
    """
    #等同于 w.resize(500,500)和w.move(100,100)两句结合,(x,y,w,h)
    #windows.setGeometry(100,100,500,500)
    #show()方法在屏幕上显示出widget组件
    windows.show()
    #循环执行窗口触发事件,结束后不留垃圾的退出,不添加的话新建的widget组件就会一闪而过
    sys.exit(app.exec_())
    

    现象如下:
    clipboard.png
    2:给创建的窗口添加标题和图标

    import sys
    from PyQt5 import QtWidgets,QtGui
    #创建一个应用(Application)对象,sys.argv参数是一个来自命令行的参数列表,
    # Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。
    app = QtWidgets.QApplication(sys.argv)
    #创建一个widget组件基础类
    windows = QtWidgets.QWidget()
    #设置widget组件的大小(w,h)
    windows.resize(500,500)
    #设置widget组件的位置(x,y)
    windows.move(100,100)
    """
    #设置widget组件的位置居中
    qr = windows.frameGeometry()
    cp = QtWidgets.QDesktopWidget().availableGeometry().center()
    qr.moveCenter(cp)
    windows.move(qr.topLeft())
    """
    #等同于 w.resize(500,500)和w.move(100,100)两句结合,(x,y,w,h)
    #windows.setGeometry(100,100,500,500)
    #给widget组件设置标题
    windows.setWindowTitle('标题')
    #给widget组件设置图标
    windows.setWindowIcon(QtGui.QIcon('2.png'))
    #show()方法在屏幕上显示出widget组件
    windows.show()
    #循环执行窗口触发事件,结束后不留垃圾的退出,不添加的话新建的widget组件就会一闪而过
    sys.exit(app.exec_())
    

    现象如下:
    clipboard.png
    3:给创建的窗口设置按钮及设置提示语

    import sys
    from PyQt5 import QtWidgets,QtGui
    #创建一个应用(Application)对象,sys.argv参数是一个来自命令行的参数列表,
    # Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。
    app = QtWidgets.QApplication(sys.argv)
    #创建一个widget组件基础类
    windows = QtWidgets.QWidget()
    #设置widget组件的大小(w,h)
    windows.resize(500,500)
    #设置widget组件的位置(x,y)
    windows.move(100,100)
    """
    #设置widget组件的位置居中
    qr = windows.frameGeometry()
    cp = QtWidgets.QDesktopWidget().availableGeometry().center()
    qr.moveCenter(cp)
    windows.move(qr.topLeft())
    """
    #等同于 w.resize(500,500)和w.move(100,100)两句结合,(x,y,w,h)
    #windows.setGeometry(100,100,500,500)
    #给widget组件设置标题
    windows.setWindowTitle('标题')
    #给widget组件设置图标
    windows.setWindowIcon(QtGui.QIcon('2.png'))
    #设置提示语的字体和大小
    QtWidgets.QToolTip.setFont(QtGui.QFont('SansSerif', 10))
    #给widget组件设置提示语
    windows.setToolTip('这是窗口提示')
    #设置按钮并给按钮命名
    btn = QtWidgets.QPushButton('button',windows)
    #给按钮设置位置(x,y,w,h)
    btn.setGeometry(200,200,100,50)
    #给按钮设置提示语
    btn.setToolTip('这是按钮提示')
    #设置按钮样式
    btn.setStyleSheet("background-color: rgb(164, 185, 255);"
            "border-color: rgb(170, 150, 163);"
            "font: 75 12pt \"Arial Narrow\";"
            "color: rgb(126, 255, 46);")
    #点击按钮关闭创建的窗口
    btn.clicked.connect(QtCore.QCoreApplication.instance().quit)
    #show()方法在屏幕上显示出widget组件
    windows.show()
    #循环执行窗口触发事件,结束后不留垃圾的退出,不添加的话新建的widget组件就会一闪而过
    sys.exit(app.exec_())
    

    现象如下(点击button按钮,窗口关闭):
    clipboard.png
    4:设置标签(lable)信息

    import sys
    from PyQt5 import QtWidgets,QtGui,QtCore
    #创建一个应用(Application)对象,sys.argv参数是一个来自命令行的参数列表,
    # Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。
    app = QtWidgets.QApplication(sys.argv)
    #创建一个widget组件基础类
    windows = QtWidgets.QWidget()
    #设置widget组件的大小(w,h)
    windows.resize(500,500)
    #设置widget组件的位置(x,y)
    windows.move(100,100)
    """
    #设置widget组件的位置居中
    qr = windows.frameGeometry()
    cp = QtWidgets.QDesktopWidget().availableGeometry().center()
    qr.moveCenter(cp)
    windows.move(qr.topLeft())
    """
    #等同于 w.resize(500,500)和w.move(100,100)两句结合,(x,y,w,h)
    #windows.setGeometry(100,100,500,500)
    #给widget组件设置标题
    windows.setWindowTitle('标题')
    #给widget组件设置图标
    windows.setWindowIcon(QtGui.QIcon('2.png'))
    #设置lable信息
    label = QtWidgets.QLabel(windows)
    label.setGeometry(QtCore.QRect(100, 10, 100, 60))
    label.setText('这是lable信息')
    label.setObjectName('label')
    #show()方法在屏幕上显示出widget组件
    windows.show()
    #循环执行窗口触发事件,结束后不留垃圾的退出,不添加的话新建的widget组件就会一闪而过
    sys.exit(app.exec_())
    

    现象如下:
    clipboard.png
    5:配置输入框

    import sys
    from PyQt5 import QtWidgets,QtGui,QtCore,Qt
    #创建一个应用(Application)对象,sys.argv参数是一个来自命令行的参数列表,
    # Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。
    app = QtWidgets.QApplication(sys.argv)
    #创建一个widget组件基础类
    windows = QtWidgets.QWidget()
    #设置widget组件的大小(w,h)
    windows.resize(500,500)
    #设置widget组件的位置(x,y)
    windows.move(100,100)
    """
    #设置widget组件的位置居中
    qr = windows.frameGeometry()
    cp = QtWidgets.QDesktopWidget().availableGeometry().center()
    qr.moveCenter(cp)
    windows.move(qr.topLeft())
    """
    #等同于 w.resize(500,500)和w.move(100,100)两句结合,(x,y,w,h)
    #windows.setGeometry(100,100,500,500)
    #给widget组件设置标题
    windows.setWindowTitle('标题')
    #给widget组件设置图标
    windows.setWindowIcon(QtGui.QIcon('2.png'))
    #设置输入框
    textbox = Qt.QLineEdit(windows)
    textbox.resize(100,20)
    textbox.move(50,50)
    #show()方法在屏幕上显示出widget组件
    windows.show()
    #循环执行窗口触发事件,结束后不留垃圾的退出,不添加的话新建的widget组件就会一闪而过
    sys.exit(app.exec_())
    

    现象如下:
    clipboard.png
    三:将上述方法总结一下实现了一个简单的功能,如下:
    功能为:在输入框中输入值过后,点击按钮就会打印出你输入的值,关闭窗口会有提示

    import sys
    from PyQt5 import QtWidgets,QtGui,QtCore,Qt
    class GUI(QtWidgets.QWidget):
        def __init__(self):
            #初始化————init__
            super().__init__()
            self.initGUI()
        def initGUI(self):
            #设置窗口大小
            self.resize(500,500)
            #设置窗口位置(下面配置的是居于屏幕中间)
            qr = self.frameGeometry()
            cp = QtWidgets.QDesktopWidget().availableGeometry().center()
            qr.moveCenter(cp)
            self.move(qr.topLeft())
            #设置窗口标题和图标
            self.setWindowTitle('窗口标题')
            self.setWindowIcon(QtGui.QIcon('2.png'))
            #设置窗口提示
            self.setToolTip('窗口提示')
            #设置label信息
            self.label = QtWidgets.QLabel(self)
            self.label.setGeometry(QtCore.QRect(100, 10, 100, 60))
            self.label.setText('这是lable信息')
            self.label.setObjectName('label')
            # 设置label提示
            self.label.setToolTip('label提示')
            #设置输入框
            self.textbox = Qt.QLineEdit(self)
            self.textbox.resize(100, 20)
            self.textbox.move(100, 50)
            # 设置输入框提示
            self.textbox.setToolTip('输入框提示')
            #设置按钮
            self.btn =QtWidgets.QPushButton('按钮',self)
            self.btn.resize(100,20)
            self.btn.move(200,50)
            # 设置按钮样式
            self.btn.setStyleSheet("background-color: rgb(164, 185, 255);"
                              "border-color: rgb(170, 150, 163);"
                              "font: 75 12pt \"Arial Narrow\";"
                              "color: rgb(126, 255, 46);")
            # 设置按钮提示
            self.btn.setToolTip('按钮提示')
            #点击鼠标触发事件
            self.btn.clicked.connect(self.clickbtn)
            #展示窗口
            self.show();
        #点击鼠标触发函数
        def clickbtn(self):
            #打印出输入框的信息
            textboxValue = self.textbox.text()
            QtWidgets.QMessageBox.question(self, "信息", '你输入的输入框内容为:' + textboxValue,QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok)
            #清空输入框信息
            self.textbox.setText('')
        #关闭窗口事件重写
        def closeEvent(self, QCloseEvent):
            reply = QtWidgets.QMessageBox.question(self, '警告',"确定关闭当前窗口?", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No)
            if reply == QtWidgets.QMessageBox.Yes:
                QCloseEvent.accept()
            else:
                QCloseEvent.ignore()
    if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
        gui = GUI()
        sys.exit(app.exec_())
    

    现象为:
    clipboard.png

    展开全文
  • python使用pyqt多线程来显示视频

    千次阅读 2020-04-14 16:05:27
    在正式开始之前,得说几句感想,在最初学python的时候,对于多线程多进程,只有一个概念以及知道大概怎么用,但是什么情况下使用多线程,什么情况下使用多进程,我对这个概念还不是很清晰,正好前一...在使用pyqt的...

    在正式开始之前,得说几句感想,在最初学python的时候,对于多线程多进程,只有一个概念以及知道大概怎么用,但是什么情况下使用多线程,什么情况下使用多进程,我对这个概念还不是很清晰,正好前一个月左右做了个项目,在这个项目中,我使用了多线程来在界面上显示视频,今天想了想,还是写上这个,用于以后自己看或者给其他有兴趣的朋友看。

    使用的技术:python + pyqt + opencv

    在使用pyqt的过程中,我们经常就会遇到一种情况,当我们在界面上要显示视频的时候,会出现卡死的情况,要解决这个问题,就得用到多线程的技术,利用分出去的线程来处理后台发过来的图像数据,然后线程将这个图像进行显示。

    首先,在Pyqt中,我们如何利用designed来设计整个软件的模样,如何让这个软件的界面好看,这个不属于我们这篇文章的讨论内容,我们值讨论如何让界面正常的显示视频并且不会卡顿。

    为了解决这个问题,我们可以得了解pyqt的信号机制这些,这些也不属于我这篇文章讨论的内容,有不明白的可以自行了解,在这个问题中,我们要解决这个问题,得构建一个类,这个类继承pyqt中的QThread,代码如下:

    '''this code is designed by nike hu'''
    class imageThread(QThread):
        showImage = pyqtSignal(object) # 这里可以不要,这里是定义信号的
        def __init__(self, image): # 在调用这个类的时候传入image这个参数
            super().__init__()
            self.image = image
    
        def run(self): # 在使用这个类的时候直接调用这个接口就行
            # self.showImage.emit(image_color)
            image = self.image
            (imageH, imageW) = image.shape[0:2]
            Qimag = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) # pyqt中正常显示图片需要将opencv中的bgr转化为rgb
            QiM = QImage(Qimag.data, imageW, imageH,
                         imageW * 3, QImage.Format_RGB888) # 这也是将图像显示在界面中的必备步骤,QImage是从PyQt5.QtGui中导入的
            ui.hotImage.setPixmap(QPixmap.fromImage(QiM)) # ui.hotImage是pyqt中的lable控件,这个名字是你在画界面的时候自己定义的
    
    

    在处理这类问题的时候,我的处理方法一般是把整个界面当成一个主线程,然后我会另外开一个线程来处理后台的数据,我们将这个线程称为子线程1,那么子线程1在处理接收到的每一帧图像数据的时候,我要么在子线程1的基础上另外开一个子线程2来处理图像的线程,子线程2将图像显示完就自己结束自己,或者我在主线程上开两个线程,一个子线程1,一个子线程2,子线程2是一个while循环,子线程1负责处理后台数据,然后通过全局变量的方式,子线程2来读取子线程1处理的图像数据,经过我的实验,最后界面是不再存在卡顿的现象。由于我的那个涉及到显示视频的是一个完整的项目,要将里面的代码拆分出来显示,不好拆分,所以就不再贴代码了,思路我已经提供了。对了,注意视频流图像读取的速度以及界面显示图像的速度,如果是毫无间隙的进行操作,也可能会出现卡顿现象,这时候,使用time.sleep(0.01)让这个线程休息0.01s或者再稍微长一点的时间,那么就可以避免这个问题的产生。

    总结一下:多线程适用这种i/o延时高的操作,如果后台涉及到大量的数据运算的情况,那么就必须得利用多进程了,我有空会写一篇来处理人脸识别中导致的视频显示的效果帧数太低的情况。

    2020 4.14

    展开全文
  • 相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富。这一篇用PyQT实现一个视频播放器,并借此来说明PyQT的基本用法。 视频播放器 先把已经完成的代码放出来。代码基于Python 3.5: import time import sys ...
  • 主要介绍了Python使用PyQt5/PySide2编写一个极简的音乐播放器功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • python使用pyqt5制作计算器

    千次阅读 2019-11-27 18:39:38
    这两天看pyqt5了,这个模块可以用来制作桌面软件,自己试着做了个计算器,这里记录一下。 安装: pip install PyQt5 安装完成继续安装PyQt5-tools pip install PyQt5-tools 然后配置pycharm 点击:File -》Settings-...
  • python 使用PyQt5制作UI

    2020-04-26 13:54:05
    1、通过命令分别在cmd中进行...pip install PyQt5 pip install PyQt5-tools 2、双击designer.exe(默认目录:C:\Users\Dell\PycharmProjects\untitled1\venv\Lib\site-packages\QtDesigner)进行编辑并保存。保存...
  • Python 使用PyQt5进行界面程序开发

    千次阅读 2019-04-26 20:48:50
    目的:使用PyQt5进行界面程序开发环境:问题:解决方案:步骤: 环境: 系统:win10 IDE: Pycharm 2018.1.4 Python版本: 3.6.4 问题: 之前进行Python界面程序开发使用的Tkinter ,生成界面较为粗糙,...
  • python使用 Visual Studio2019自带(3.7版) 扩展包:pyqtdesigner pyqict5 第一步: 在安装 Visual Studio 2019中选择python项目。 第二步: 新建python项目, 选择python环境选项。利用 Visual Studio系统自动安装...
  • 520过去了,还有521,七夕情人节…………...from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import * import PyQt5.QtGui as qt app = QApplication(sys.argv) win = QWidget() win.resize(760, 540) win.mo.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,529
精华内容 1,811
关键字:

python使用pyqt

python 订阅