Articles of pyqt

我想在python中运行sudo来打开一个应用程序

例如,如果我想对我的python脚本调用突触,这是我所尝试的,但是我得到Popen的错误。 无论如何,使这个工作与sudo而不是gksu? 我想用这个方法在更大的程序中运行脚本。 process = subprocess.Popen("sudo synaptic", 'w', stdout=subprocess.PIPE, bufsize=1).write(password) TypeError: __init__() got multiple values for keyword argument 'bufsize' 以下是我正在与之合作 from PyQt4 import QtGui, QtCore import os import sys import subprocess # from mainwindow import Ui_MainWindow class PasswordDialog(QtGui.QDialog): def __init__(self, parent=None): super(PasswordDialog, self).__init__(parent) PasswordDialog.resize(self, 375, 130) PasswordDialog.setWindowTitle(self, "Enter Password") self.buttonOk = QtGui.QPushButton(self) self.buttonOk.setText("OK") self.buttonCancel = […]

如何在Linux中使用PyInstaller编译Python

我使用Python 3.5.2 , PyQt 5.7 , PyInstaller 3.2和我在Linux中 我可以编译pyinstaller file.py 但是当我运行Build文件夹中的二进制文件时,它会返回: Error loading Python lib '/home/arash/build/file/libpython3.5m.so.1.0': /home/arash/build/file/libpython3.5m.so.1.0: cannot open shared object file: No such file or directory python库(.so文件)在二进制文件里拷贝或PyInstaller标志拷贝库文件在哪里?

菜单项在Mac OS上不显示

我试图将我的PyQt程序移植到Mac OS上。 我在Linux上开发它。 PyQt(4)安装在2台电脑上,使用python 3.4。 一切似乎工作。 该程序完美地在Linux电脑上运行。 我只是简单地把它转移到mac电脑上,然后试着运行它。 它运行,除了只有一件事: 我有一个菜单项(在菜单栏中),用于程序的设置: # Action to show a settings window self.settingsAction = QtGui.QAction('Settings', self) self.settingsAction.triggered.connect(lambda: Settings(self)) …Some code… # Menu entry for the settings self.menubar.addAction(self.settingsAction) 在Linux上,“设置”条目完美地显示在菜单栏中,并打开设置窗口。 但在Mac OS上,不显示设置条目。 根本不显示。 所有其他条目(文件,编辑,查看等)都正确显示,但不是设置。 并没有提出exception。 我卡在这里,我从来没有使用Mac OS,所以我甚至不知道从哪里开始进行debugging。 你有什么build议吗? 编辑: 我也试过了 #显示设置窗口的动作self.settingsAction = QtGui.QAction('Preferences',self)self.settingsAction.triggered.connect(lambda:Settings(self)) …Some code… # Menu entry for the settings self.menubar.addAction(self.settingsAction)

中断embedded在QT4小部件中的IPython内核

我想embedded一个Ipythonterminal在QT小部件,所以我可以访问我的QT应用程序中的对象。 我知道这是可能的例如这样的例子: https : //github.com/gpoulin/python-test/blob/master/embedded_qtconsole.py然而,如果内核阻塞(例如在一个无限的while循环)整个应用程序没有响应,只能从运行qt应用程序的terminal键盘中断来终止。 如果我使用QtKernelManager而不是QtInProcessKernelManager,则可以成功地从qt应用程序中断内核,但由于内核embedded在不同的进程中,因此无法访问其中的对象。 在同一个进程中embeddedIPythonterminal时,有没有办法捕捉键盘中断? 还是应该使用embedded内核的不同实现? 我的改编的代码如下 import os os.environ['QT_API'] = 'pyqt' import sip sip.setapi("QString", 2) sip.setapi("QVariant", 2) import sys from PyQt4 import QtGui, QtCore from pkg_resources import require require('ipython') from IPython.qt.console.rich_ipython_widget import RichIPythonWidget from IPython.qt.inprocess import QtInProcessKernelManager class IPythonWidget(QtGui.QWidget): def __init__(self, **kwarg): super(IPythonWidget, self).__init__() self.initUI() def startIpKernel(self): self.kernel_manager = QtInProcessKernelManager() self.kernel_manager.start_kernel() self.kernel_manager.kernel.gui […]

PyQt4不能导入Qsci

我正在一个旧的Linux系统(CentOS 4.4)上安装PyQt4,由于硬件兼容性的原因无法升级。 我已经安装了Python 2.6,QT4和SIP,并且安装了PyQt4并没有给我带来任何错误。 当我运行Python时,会发生这种情况: Python 2.6.2 (r262:71600, May 11 2011, 14:18:37) [GCC 3.4.6 20060404 (Red Hat 3.4.6-3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import PyQt4 >>> import PyQt4.Qsci Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named Qsci 我环顾四周,发现/usr/local/lib/python2.6/site-packages/PyQt4/uic/widget-plugins/qscintilla.py ,这几乎是空的非评论的东西: pluginType = […]

两个linux共享对象之间的冲突定义了相同的函数名

我的问题涉及Python,Qt,PyQt和其他的东西,但问题实际上是关于Linux的ld.so是如何工作的。 问题 如果一个程序加载了两个不同的共享库,它们都有相同的入口点名称(即它们都定义了一个具有相同名称和签名的函数),它如何判断它正在调用哪个版本? 我的问题 我有一个用C ++编写的第三方专有Linux应用程序(尽pipe原始语言是不相关的),并且它与Qt3.3dynamic链接。 该应用程序embedded了一个Python解释器,可以用来为它编写脚本。 您甚至可以使用应用程序的embedded式Python代替原来的代码,例如: /path/to/the/program/python 它显示了以下内容: Python 2.7.1 (r271:86832, Sep 16 2011, 18:16:32) [GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 使用gcc 4.1.2我已经构build并安装了来自源代码的PyQt4,并且安装了系统也具有的Qt4库。 我相信这个构build是成功的,因为我可以运行一个小型的PyQt4应用程序: /path/to/the/program/python mypyqtapp.py 但是,如果我用GUI加载程序并加载相同的脚本,则会在第一个PyQt4调用( QApplication类的实例化)中崩溃。 由于python环境是相同的,我怀疑它可能是Qt3和Qt4之间的某种共享库冲突。 但是,命令strace -e trace=file显示python在两种情况下都find并加载了正确的Qt4库。 所以,我的问题是,如果一个程序加载两个共享不同的库,定义相同的function,它是如何知道它正在调用正确的? Linux加载器ld.so是否有资格入口点文件名或什么的? 我怀疑我的问题可能存在,应用程序最终加载了两个不同的QApplication实例,它调用了错误的实例,但ld.so实际上在内部是如何工作的。 也可能是我的问题是由完全不同的东西造成的。 谢谢。

为linux打包python应用程序

我用python和PyQt5做了一个GUI应用程序。 我想打包这个应用程序,但似乎没有一个简单的方法来做到这一点。 而且我find的答案是打包python模块而不是应用程序。 我已经阅读了各种文章和官方文档,但似乎还没有一个正确的答案,虽然有几个解决方法,我可以达到相同的,我只是想知道什么是标准的方式。 这是我的目录结构: Moodly/ Moodly/ __init__.py controller.py logic.py models.py view.py resoure.py style.py sounds/ notify.wav message.wav setup.py MANIFEST.in setup.cfg run.py moodly.png Moodly.desktop 我想达到什么:用户给了一个Moodly的tar文件。 用户提取它,运行命令 python setup.py install 在terminal中,安装程序将所有文件放在适当的位置,并创build一个Moodly.desktop文件,可能在usr / local / share / applications中点击哪个用户可以运行该应用程序。 我的方法是: setup.py from setuptools import setup setup( name="Moodly", version="1.0", author="Akshay Agarwal", author_email="agarwal.akshay.akshay8@gmail.com", packages=["Moodly"], include_package_data=True , url="http://github.com/AkshayAgarwal007/Moodly", entry_points = { 'gui_scripts': […]

在拖动/调整窗口大小的同时在窗口上调用isActive()时,返回false。 (X11,Qt 5.4.0)

我在Linux上使用Qt 5.4.0(X11),我需要确定,如果我的窗口是活动的。 所以,我写了下面给出的示例代码。 如果在Windows上编译该代码,则只有在窗口不是真正活动的情况下才会在控制台中logging“false”。 但在Linux(X11)上,当我开始拖动或调整窗口大小时,它也会logging“false”。 为什么会发生这种情况,以及如何解决在Linux上? 我想知道,当我的窗口是非活动的,当它是活跃的,但被拖动/resize。 代码片段(C ++): void MainWindow::changeEvent(QEvent *e) { if (e->type() == QEvent::ActivationChange) { if (this->isActiveWindow()) { std::cout << "True" << std::endl; } else { std::cout << "False" << std::endl; } } } 相同的代码,在PyQt5上: import sys from PyQt5.QtCore import Qt, QEvent from PyQt5.QtWidgets import QWidget, QApplication class TransparentWidget(QWidget): def __init__(self): super(TransparentWidget, […]

我如何在Linux上编译QScintilla和Eric6?

首先我按照以下步骤安装QScintilla: 1: cd Qt4Qt5 qmake qscintilla.pro sudo make make install 2: cd ../designer-Qt4Qt5 qmake designer.pro sudo make sudo make install 3: cd ../Python python3 configure.py –pyqt=PyQt5 sudo make 在这里,我遇到了这个问题: QAbstractScrollArea: No such file or directory 和问题: qprinter.h: No such file or directory 但我终于通过手动添加所需文件来解决它们。 继续: sudo make install 4: 然后我通过键入来安装eric6: sudo python3 install.py 但是我得到了: 检查依赖关系 Python版本:3.4.0 […]

无需密码即可远程closures/重新启动Linux机器

我正在写一个pyQt客户端 – 服务器应用程序,远程重新启动/closuresPC。 接收方正在监听networking是否收到消息,发送方向选定的接收方发送重启/closures消息。 以下部分代码在接收器上运行: import os self.currentOS = calling a function to determine the current OS if self.currentOS == "Win": os.system("shutdown -r -f -t 1") elif self.currentOS == "Lin": os.system("shutdown -r now") 我有两个虚拟机作为接收器,一个在Windows上,另一个在Linux上。 当我发送重新启动消息到Windows接收器时,机器重新启动。 当我发送一个重启消息到Linux接收器, 它要求input密码 Incoming:EXEC_OP_RESTART [sudo] password for jwalker: 我需要改变什么来克服这个问题? 是shutdown -r now唯一的方法,或者我可以做另一种方式(更直接)? 编辑:在这个问题中,使用了一个叫做dbus东西,它没有密码,我正在寻找dbus作为替代。