标签: pyqt

pip安装PyQt IOError

我正在尝试使用pip安装PyQt包,但是我收到此错误:

~$ pip install PyQt

Downloading/unpacking PyQt  
Downloading PyQt-x11-gpl-4.8.3.tar.gz
(9.8Mb): 9.8Mb downloaded   Running
setup.py egg_info for package PyQt
    Traceback (most recent call last):
      File "<string>", line 14, in <module>
    IOError: [Errno 2] No such file or directory:
'/home/john/build/PyQt/setup.py'
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 14, in
<module>

IOError: [Errno 2] No such file or
directory:
'/home/john/build/PyQt/setup.py

---------------------------------------- Command python setup.py egg_info
failed with error code 1 Storing
complete log in
/home/john/.pip/pip.log
Run Code Online (Sandbox Code Playgroud)

python pip pyqt ioerror setup.py

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

PyQt在连接信号时将参数发送到插槽

我有一个任务栏菜单,单击时连接到获取触发事件的插槽.现在问题是我想知道单击了哪个菜单项,但我不知道如何将该信息发送到连接的功能.这是用于将动作连接到函数:

QtCore.QObject.connect(menuAction, 'triggered()', menuClickedFunc)
Run Code Online (Sandbox Code Playgroud)

我知道有些事件返回一个值,但是trigger()没有.那么我该如何实现呢?我必须自己制作信号吗?

python qt4 pyqt

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

发送自定义PyQt信号?

我正在通过制作一个简单的Twitter客户端来练习PyQt和(Q)线程.我有两个Qthreads.

  1. 主/ GUI线程.

  2. Twitter获取线程 - 每隔X分钟从Twitter获取数据.

因此,每隔X分钟我的Twitter线程就会下载一组新的状态更新(Python列表).我想将此列表交给Main/GUI线程,以便它可以使用这些状态更新窗口.

我假设我应该使用信号/插槽系统将"状态"Python列表从Twitter线程传输到Main/GUI线程.所以,我的问题是双重的:

  1. 如何从Twitter线程发送状态?

  2. 如何在Main/GUI线程中收到它们?

据我所知,PyQt默认只能通过信号/插槽发送PyQt对象.我想我应该以某种方式注册一个我可以发送的自定义信号,但我发现的这个文档对于像我这样的新手来说是非常不清楚的.我订购了一本PyQt书,但它不会在另一周到来,我不想等到那时.:-)

我在Ubuntu上使用PyQt 4.6-1

更新:

这是一个不起作用的代码.首先,我尝试将信号("newStatuses",我刚刚编写的名称)"连接"到Main/GUI线程中的函数self.update_tweet_list:

QtCore.QObject.connect(self.twit_in,
                       QtCore.SIGNAL("newStatuses (statuses)"),
                       self.update_tweet_list)
Run Code Online (Sandbox Code Playgroud)

然后,在Twitter主题中,我这样做:

self.emit(SIGNAL("newStatuses (statuses)"), statuses)
Run Code Online (Sandbox Code Playgroud)

调用此行时,我收到以下消息:

QObject::connect: Cannot queue arguments of type 'statuses'
(Make sure 'statuses' is registered using qRegisterMetaType().)
Run Code Online (Sandbox Code Playgroud)

我搜索了qRegisterMetaType(),但是我找不到任何与Python有关的东西,我能理解.

python pyqt pyqt4 qthread

28
推荐指数
4
解决办法
3万
查看次数

如何配置Qt4Agg后端的行为?

在之前的一个问题中,我了解到,行为show()依赖于matplotlib使用的后端.那时我正在寻找一种方法来show()避免删除图形的绘图元素,得出的结论是,通过从Qt4Agg切换到TkAgg,即使数字被关闭,绘图元素也会被保留.如果可能的话,我想通过学习如何配置Qt4agg后端以按照需要运行来增加我的超级大国.

python pyqt matplotlib

28
推荐指数
1
解决办法
1775
查看次数

如何在Ubuntu中为Python 3配置PyQt4?

这个问题最初是在askubuntu.com上提出的,但没有引起注意,所以我想也许这是一个更好的问题.

我用synaptic安装了PyQt4.

我正在使用Python3所以我需要在eclipse中配置PyQt4的路径,但似乎synaptic只为python 2安装了PyQt4,因为我只在python 2.6和2.7下找到了相关的文件和文件夹.

那么如何让PyQt4与Python 3和eclipse一起工作呢?

谢谢.

更新:

我尝试按照这篇文章配置它:http://ubuntuforums.org/showthread.php?p = 10914908#post10914908

但是在遵循所有指令后没有发生任何错误的方式,我在python 3.2中运行此代码时收到错误:

>>> import PyQt4
Run Code Online (Sandbox Code Playgroud)

错误消息是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named PyQt4
Run Code Online (Sandbox Code Playgroud)

但奇怪的是,相同的代码在python 2.7中导致NO错误(我的机器上安装了2.7和3.2)

ubuntu pyqt python-3.x

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

检测QLineEdit或QPushButton上的输入

我为游戏构建了一个应用程序,开始很简单.这是一个系统随机选择一个数字并且游戏玩家(玩家)试图找出数字的游戏.一切都快完成了.该应用程序包括QLineEdit一个标签和三个按钮.一旦应用告诉玩家所需号码的范围,他/她键入bet_number并点击播放按钮.并且根据该数字,他/她得到关于所需数字离bet_number有多远或多远的消息.

但我觉得单击一个按钮有点恶心.相反,我想使用Enter键来玩.所以要实现这一点,具体来说有两个问题:

  1. 如何改变使用Enter来播放(我的意思是我需要知道何时QLineEdit检测到输入键被按下)?通过这种方式,我将正确编码以指向播放方法.

  2. 如果播放按钮有焦点,那么如何在此按钮上使用回车键?(make Button接受Enter键)

qt pyqt keypress qlineedit python-3.x

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

将stdout和stderr从辅助线程重定向到PyQt4 QTextEdit

堆栈溢出.再一次,我在一个迫切需要的时候来找你,在疯狂的边缘岌岌可危地摇摇欲坠.这个问题 - 从标题中可以看出 - 是我在这里回答的其他几个问题的合并.

我有一个PyQt应用程序,我想将stdout和stderr流重新路由到我的GUI中的QTextEdit,没有延迟.

最初,我发现以下堆栈溢出答案: https ://stackoverflow.com/a/17145093/629404

这很有效,但有一点需要注意:如果在CPU处理相对较长的方法时多次更新stdout或stderr,则当主线程返回到应用程序循环时,所有更新都会同时显示.不幸的是,我有一些方法需要20秒才能完成(网络相关),因此应用程序变得无响应 - 并且QTextEdit不会更新 - 直到它们完成.

为了解决这个问题,我将所有GUI处理委托给主线程,并且我已经产生了第二个线程以处理更长的网络操作,使用pyqtSignals通知主线程工作何时完成并通过回来的结果.当我开始测试以这种方式编写的代码时,python解释器立刻开始崩溃而没有任何警告.

这是非常令人讨厌的地方:Python正在崩溃,因为 - 使用上面包含的链接中的类 - 我已经将sys.stdout/err流分配给QTextEdit小部件; PyQt小部件不能从除应用程序线程之外的任何线程修改,并且由于对stdout和stderr的更新来自我创建的辅助工作线程,因此它们违反了此规则.我已经注释掉了我重定向输出流的代码部分,果然,程序运行没有错误.

这让我回到原点,让我陷入困惑的境地; 假设我继续在主线程中处理GUI相关操作并处理辅助线程中的计算和更长时间的操作(我已经理解这是在用户触发事件时阻止应用程序阻塞的最佳方法),我该怎么办将Stdout和Stderr从两个线程重定向到QTextEdit小部件?上面链接中的类对于主线程来说效果很好,但是当更新来自第二个线程时,由于上述原因会杀死python.

python multithreading stdout pyqt thread-safety

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

Python中的Qt/C++原型

我想用Qt编写一个C++应用程序,但是首先使用Python构建一个原型,然后逐渐用C++替换Python代码.

这是正确的方法,我应该使用哪些工具(绑定,绑定生成器,IDE)?
理想情况下,所有内容都应该在Ubuntu存储库中可用,因此我不必担心不兼容或旧版本,并且只需简单地设置所有内容即可aptitude install.
是否有关于此过程的全面文档,或者我是否必须学习每个组件,如果是,那么哪些组件?

现在我有多种选择:Qt Creator,因为很好的自动完成和Qt集成.
Eclipse,因为它支持C++和Python.埃里克(还没用过)Vim

PySide因为它正在使用CMake和Boost.Python,所以从理论上讲它会更容易替换python代码.PyQt因为它被更广泛地使用(更多支持)并且可以作为Debian包使用.

编辑:因为我必须将程序部署到各种计算机,C++ - 解决方案将需要1-5个文件(程序和一些库文件,如果我静态链接它),使用Python我必须构建PyQt/PySide/SIP /在每个平台上都有,并解释如何安装Python和其他所有东西.

c++ python qt pyqt pyside

25
推荐指数
1
解决办法
5203
查看次数

如何在PyQT小部件中嵌入Python解释器

我希望能够从我的python应用程序中调出一个交互式python终端.我的程序中的一些(但不是全部)变量需要暴露给解释器.

目前我使用子类和修改QPlainTextEdit并将所有"命令"路由到evalexec,并在dict中跟踪单独的命名空间.然而,必须有一个更优雅和健壮的方式!怎么样?

这是一个做我想要的例子,但它是用IPython和pyGTK ... http://ipython.scipy.org/moin/Cookbook/EmbeddingInGTK

以下是我目前的情况.但是有太多的角落案例我可能错过了一些.这是非常慢,尝试一个大的打印循环...它必须是一个更简单,更少漏洞的方式,...我希望!

这个def runCommand(self)功能是理解我的问题的关键.理想情况下,我不想改进它,我宁愿用更简单,更聪明的东西来替换它的内容.

console.updateNamespace({'myVar1' : app, 'myVar2' : 1234})"main"中语句的功能也很重要.

import sys, os
import traceback
from PyQt4 import QtCore
from PyQt4 import QtGui

class Console(QtGui.QPlainTextEdit):
    def __init__(self, prompt='$> ', startup_message='', parent=None):
        QtGui.QPlainTextEdit.__init__(self, parent)
        self.prompt = prompt
        self.history = []
        self.namespace = {}
        self.construct = []

        self.setGeometry(50, 75, 600, 400)
        self.setWordWrapMode(QtGui.QTextOption.WrapAnywhere)
        self.setUndoRedoEnabled(False)
        self.document().setDefaultFont(QtGui.QFont("monospace", 10, QtGui.QFont.Normal))
        self.showMessage(startup_message)

    def updateNamespace(self, namespace):
        self.namespace.update(namespace)

    def showMessage(self, message):
        self.appendPlainText(message)
        self.newPrompt()

    def newPrompt(self):
        if …
Run Code Online (Sandbox Code Playgroud)

python embed pyqt ipython

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

PyQt/PySide中是否有默认图标?

我正在阅读关于PySide的教程,我在想,我是否需要为每件事找到自己的图标,或者是否有某种方法可以使用一些内置图标.这样,如果我想让我的小gui在另一个桌面环境中运行,我就不需要找到一整套新的图标.

python user-interface icons pyqt pyside

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