标签: pyqt5

如何使用PyQt5设置窗口图标?

from PyQt5 import QtWidgets, QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class Application(QMainWindow):
    def __init__(self):
        super(Application, self).__init__()
        self.setWindowIcon(QtGui.QIcon('icon.png'))
Run Code Online (Sandbox Code Playgroud)

我正在尝试设置一个窗口图标(窗口的左上角),但正常的图标却消失了.

我尝试了许多图标分辨率(8x8,16x16,32x32,64x64)和扩展名(.png和.ico).

我究竟做错了什么?

python icons qmainwindow pyqt5 python-3.6

11
推荐指数
2
解决办法
2万
查看次数

PyQt5 QuickControls材质风格

我用最新的PyQt5 QuickControls试验,并试图通过QML申请材料风格解释这里这里:

QQuickStyle::setStyle("Material");
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我找不到在PyQt中对QQuickStyle类的任何引用来通过python代码应用样式,只有工作解决方案是为此指定命令行参数:

python app.py -style material
Run Code Online (Sandbox Code Playgroud)

有人能通过python脚本指出我正确应用QuickControls样式吗?

python qt pyqt pyqt5 qtquickcontrols

11
推荐指数
1
解决办法
1955
查看次数

通过pyqtdeploy和Qt5将PyQt5应用程序部署到Android

可能吗?我的意思是,是的,pyqtdeploy介绍页面说:"pyqtdeploy是一个部署PyQt应用程序的工具.它支持部署到桌面平台(Linux,Windows和OS/X)和移动平台(iOS,Android和Windows RT)."

我已经安装了Qt 5.3.0 for Android及其所有先决条件(SDK,NDK等).此外,我在QtCreator中使用简单的按钮和标签制作了测试项目,用于测试部署.一切都好.下一步是尝试pyqtdeploy来制作Qt项目,非常简单.但是当我试图构建这个项目时,链接器说没有QtCore,QtWidget库.我可以认识到,我没有静态链接的PyQt库,必须为arm架构编译它们.这样对吗?但后来我意识到,python库本身也必须是arm编译的.我可以在Qt中从源代码构建这个库吗?

搜索什么也没做.如果这是真的,为什么没有人(河岸,python)没有手臂编译库?也许我很想念一些东西.在这种情况下,我有更多的全球性问题.

如何使用pyqtdeploy和Qt 5.3.0 for Android将PyQt5.3 Python 3.4应用程序部署到Android?

android qt5 python-3.4 pyqt5 pyqtdeploy

10
推荐指数
1
解决办法
4413
查看次数

PyQt5中的connect()方法在哪里?

我正在关注Rapid GUI Programming with Python and Qt正在使用PyQt4的Mark Summerfield .我更喜欢使用PyQt5,但我的机器上都有.我正在书中进行第二次练习,内容如下:

from __future__ import division
import sys
from math import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *


class Form(QDialog):

    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.browser = QTextBrowser()
        self.lineedit = QLineEdit("Type an expression and press Enter")
        self.lineedit.selectAll()
        layout = QVBoxLayout()
        layout.addWidget(self.browser)
        layout.addWidget(self.lineedit)
        self.setLayout(layout)
        self.lineedit.setFocus()
        # This line fails:
        self.connect(self.lineedit, SIGNAL("returnPressed()"), self.updateUi)
        self.setWindowTitle("Calculate")


    def updateUi(self):
        try:
            text = unicode(self.lineedit.text())
            self.browser.append("%s = <b>%s</b>" % (text, eval(text)))
        except:
            self.browser.append(
                    "<font color=red>%s is …
Run Code Online (Sandbox Code Playgroud)

python qt pyqt pyqt5

10
推荐指数
1
解决办法
2万
查看次数

PyQt5:DLL加载失败:找不到指定的模块

我最近在Windows上为32位计算机安装了PyQt5模块.但是,当我试图运行他们的例子时,没有一个会运行.提供的所有示例都具有与下图中类似的错误类型.当我尝试在Python shell中导入PyQt5时,它只是正确导入.

在此输入图像描述

我认为这表明PyQt已成功安装.

但是,当我尝试运行示例时,它显示如下:

在此输入图像描述

这是一个例子,其他例子有不同的'没有创建'

事实 - 运行Windows 7,PyQt5最新版本,Python 3.5,安装PyQt5从原始站点进行设置

我知道有几个类型的问题,但没有一个帮助我,因为大多数问题都是针对Linux的.

python module pyqt python-3.x pyqt5

10
推荐指数
1
解决办法
2万
查看次数

如何使用PyQt5的QWebEngineView"渲染"HTML

如何使用PyQt5 v5.6 QWebEngineView"渲染"HTML?

我之前使用PyQt5 v5.4.1 QWebPage执行了该任务,但建议尝试使用较新的QWebEngineView.

这是实现(它通常按预期工作,但有一些站点和情况无限期挂起):

def render(source_html):
    """Fully render HTML, JavaScript and all."""

    import sys
    from PyQt5.QtWidgets import QApplication
    from PyQt5.QtWebKitWidgets import QWebPage

    class Render(QWebPage):
        def __init__(self, html):
            self.html = None
            self.app = QApplication(sys.argv)
            QWebPage.__init__(self)
            self.loadFinished.connect(self._loadFinished)
            self.mainFrame().setHtml(html)
            self.app.exec_()

        def _loadFinished(self, result):
            self.html = self.mainFrame().toHtml()
            self.app.quit()

    return Render(source_html).html

import requests
sample_html = requests.get(dummy_url).text
print(render(sample_html))
Run Code Online (Sandbox Code Playgroud)

以下是我尝试使用QWebEngineView.首先,在Ubuntu上安装和设置PyQt5 v5.6:

# install PyQt5 v5.6 wheel from PyPI
pip3 install --user pyqt5

# link missing resources
ln -s ../resources/icudtl.dat ../resources/qtwebengine_resources.pak …
Run Code Online (Sandbox Code Playgroud)

python pyqt pyqt5

10
推荐指数
3
解决办法
1万
查看次数

退出/退出PyQt程序的正确方法

我有一个具有登录屏幕的脚本,如果按下取消按钮,我想完全退出应用程序.我试过3种方法:

  1. sys.exit()
  2. QApplication.quit()
  3. QCoreApplication.instance()退出()

只有1号才有效.另外两个使对话框变白,然后闪烁然后挂起,我甚至无法切换到其他应用程序.我的代码如下:

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtSql import *
from PyQt5.QtWidgets import *


import csv
import sys
from datetime import datetime, timedelta, time
import os

from ci_co_table import *
from login import *

class Ci_Co(QMainWindow):
    """Check in and check out module"""

    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

class Login(QDialog):
    """User login """
    def __init__(self):
        QDialog.__init__(self)
        self.ui = Ui_login_form()
        self.ui.setupUi(self)
        self.ui.buttonBox.accepted.connect(lambda: self.handle_login(servers=servers))
        servers = {}
        with open('servers.csv', newline='') as csvfile: …
Run Code Online (Sandbox Code Playgroud)

python pyqt pyqt5

10
推荐指数
2
解决办法
3万
查看次数

Python 3.6.x PyInstaller给出错误"没有名为'PyQt5.sip'的模块"

我开发了一些在Python 3.5.4上运行良好的程序,但由于win32的一些错误让我进入Python 3.6.4,但是当我使用pyinstaller构建我的项目时,我得到:

C:\Users\User\Desktop\dist\mycommentator>mycommentator.exe
Traceback (most recent call last):
  File "mycommentator.py", line 6, in <module>
  File "c:\users\user\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 714, in load_module
    module = loader.load_module(fullname)
ModuleNotFoundError: No module named 'PyQt5.sip'
[1532] Failed to execute script mycommentator
Run Code Online (Sandbox Code Playgroud)

我试图重新安装python,所以我安装了Python 3.6.4/Python 3.6.5,这个错误也发生在我身上.无论我在PyQt5中构建什么代码,每次都出现此错误.

我也尝试移动sip.pyd到项目文件夹,但仍然发生错误.我也尝试过pip install --upgrade sip,但没有帮助.我也尝试安装pyinstaller的开发版本,这也没有帮助.

python sip pyinstaller pyqt5

10
推荐指数
1
解决办法
1万
查看次数

QMediaPlayer负回放率不回放视频

我正在尝试QMediaPlayer创建一个..媒体播放器.我希望能够通过按下按钮来回放视频.

但设置负面playbackRate通道QMediaPlayer.setPlaybackRate似乎并没有将视频放回倒带.它只是继续前进.

不想改变视频的位置,我希望视频以负速度播放.通过我的一些逻辑,设置playbackRate为负值会使视频反向播放.但这不会发生.如果你不能清楚地理解我,这里有一个播放应该是什么样子的视频.

以下是一些重现问题的准系统代码:

import sys

from PyQt5.QtCore import Qt, QUrl, QEvent
from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtWidgets import QMainWindow, QApplication

class VideoWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)

        videoWidget = QVideoWidget()
        self.setCentralWidget(videoWidget)

        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
        self.mediaPlayer.setVideoOutput(videoWidget)
        self.mediaPlayer.setMedia(
            QMediaContent(QUrl.fromLocalFile(r"<some video file>.mp4"))
        )
        self.mediaPlayer.play()

        app.installEventFilter(self)

    def eventFilter(self, source, event):
        if event.type() == QEvent.KeyPress:
            key = event.key()

            if key == …
Run Code Online (Sandbox Code Playgroud)

python qmediaplayer pyqt5

10
推荐指数
1
解决办法
393
查看次数

捕获 QApplication 中引发的异常

我正在尝试使用 PyQt5 编写一个在系统托盘中工作的应用程序。代码有时会引发异常,我需要能够捕获它们。

我希望当应用程序中发生异常时,主事件循环会退出,因此像这样捕获它应该可以工作:

try:
    application.exec()
except:
    do_stuff()
Run Code Online (Sandbox Code Playgroud)

在下面的例子中,当我按下“Raise”按钮时,我只看到了回溯,但我从来没有看到error catched!打印出来的。

from PyQt5 import QtWidgets, QtGui, QtCore

class ErrorApp():
    def __init__(self):
        # Init QApplication, QWidet and QMenu
        self.app = QtWidgets.QApplication([])
        self.widget = QtWidgets.QWidget()
        self.menu = QtWidgets.QMenu("menu", self.widget)

        # Add items to menu
        self.menu_action_raise = self.menu.addAction("Raise")
        self.menu_action_raise.triggered.connect(self.raise_error)

        self.menu_action_exit = self.menu.addAction("Exit")
        self.menu_action_exit.triggered.connect(self.app.exit)

        # Create the tray app
        self.tray = QtWidgets.QSystemTrayIcon(QtGui.QIcon("logo.png"), self.widget)
        self.tray.setContextMenu(self.menu)

        # Show app
        self.tray.show()

    def raise_error(self):
        assert False

e = ErrorApp()

try:
    e.app.exec()

except:
    print("error catched!")
Run Code Online (Sandbox Code Playgroud)

有 2 个类似的问题,但那里的答案没有做我需要做的: …

python exception pyqt pyqt5

10
推荐指数
1
解决办法
3604
查看次数