标签: pyside

可以将cx_freeze生成的EXE完全反编译回可读的Python代码吗?

我是python的新手,我正在使用Python + PySide评估开发桌面程序,并发现cx_freeze在将我的python代码转换为可执行文件方面非常有效,而且它是跨平台的.

我的问题是,有人可以将cx_freeze生成的EXE反编译回完全可读的代码,就好像我的原始源代码一样吗?

注意:我并不担心有人破解我的程序,但只是不希望别人可以接受我的代码并开发基础.

谢谢.

python decompiling pyside cx-freeze

7
推荐指数
2
解决办法
4060
查看次数

编译Python调试和pip安装调试库

我试图在我的PySide应用程序中调试一些神秘的崩溃.我目前在Windows上使用Python 2.7,并希望构建Python和PySide的调试版本以帮助调试.我按照这里的说明使用MSVC 2013构建Python的调试版本.构建大部分工作,一些我不关心无法编译的库.

我使用上面链接中的相同说明将相关文件复制到c:\ python27_d,并为其设置虚拟环境.但是,当我尝试easy_install或pip安装库,如paramiko或pycrypto时,我会收到链接错误:

winrand.obj : error LNK2019: unresolved external symbol __imp__Py_InitModule4 referenced in function _initwinr
andom

build\lib.win32-2.7-pydebug\Crypto\Random\OSRNG\winrandom.pyd : fatal error LNK1120: 1 unresolved externals
Run Code Online (Sandbox Code Playgroud)

通常,如何为Python的调试版本安装库或模块?我为提出如此广泛的问题而道歉,但我不熟悉Python如何知道在哪里找到未解决的链接的内部.

python pip pyside pycrypto visual-studio-2013

7
推荐指数
1
解决办法
774
查看次数

PySide是否支持Python 3?

我问这个的原因是因为我看过这个页面,但是我找不到从下载页面下载的Mac OSX二进制文件.有一个特殊的地方可以得到它们.

python qt pyside python-3.x

6
推荐指数
3
解决办法
7112
查看次数

结合PySide和PyGame

我想开发一个UI,其中包含用户配置应用程序的两种形式,以及一个"渲染"部分,例如,它将打印一些精灵.

是否可以在同一个应用程序中组合PySide和PyGame?例如,我如何获得包含Pygame应用程序的PySide Frame?

谢谢

python pygame pyside

6
推荐指数
1
解决办法
739
查看次数

PySide在线程之间发出None时崩溃Python

[编辑]这不是PySide发出信号的纯副本导致python崩溃的问题.这个问题特别涉及PySide中的一个(现在)已知错误,它阻止了无法跨线程传递.另一个问题涉及将信号连接到微调框.我更新了这个问题的标题,以更好地反映我面临的问题.[/编辑]

我对PySide与PyQt略有不同的情况感到震惊.好吧,我巧妙地说,但实际上PySide 崩溃了 Python,而PyQt正如我所期望的那样工作.

在PySide下我的应用程序崩溃了

我是PySide的新手,对PyQt来说还是比较新的,所以也许我犯了一些基本的错误,但是如果我能搞清楚的话该死的...真的希望你们中的一个好人能给出一些指示!

完整的应用程序是一个批处理工具,在这里描述太麻烦了,但我已经将问题解决了以下代码示例中的基本要点:

import threading

try:
    # raise ImportError()  # Uncomment this line to show PyQt works correctly
    from PySide import QtCore, QtGui
except ImportError:
    from PyQt4 import QtCore, QtGui
    QtCore.Signal = QtCore.pyqtSignal
    QtCore.Slot = QtCore.pyqtSlot


class _ThreadsafeCallbackHelper(QtCore.QObject):
    finished = QtCore.Signal(object)


def Dummy():
    print "Ran Dummy"
    # return ''  # Uncomment this to show PySide *not* crashing
    return None


class BatchProcessingWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self, None)

        btn = …
Run Code Online (Sandbox Code Playgroud)

python crash pyqt pyside

6
推荐指数
1
解决办法
831
查看次数

QWebView与QWebPage

文档(至少在PyQt中)QWebView说:'QWebView类提供了一个用于查看和编辑Web文档的小部件',而是QWebPage说:'QWebPage类提供了一个查看和编辑Web文档的对象'.鉴于这些有效地意味着同样的事情:

  • 是否有这两个类进化的历史原因?
  • 在任何特定情况下,使用哪一种比另一种更好?

(这源于我使用嵌入在PyQt应用程序中的javascript库的事实;我目前正在使用QWebView,但只有QWebPage一种捕获javascript错误的方法,所以考虑是否值得将我的代码转换为子类QwebPage)

qt pyqt qwebview qwebpage pyside

6
推荐指数
1
解决办法
2207
查看次数

从PySide访问d指针

我正在尝试使用PySide创建一些自定义小部件,这将扩展现有的小部件.是否可以从PySide访问存储在"d指针"中的数据.例如,我想继承QLabel.我需要编写一个新的paintEvent函数,但是,我需要复制一些使用来自"d指针"的数据的paintEvent代码,例如d-> control-> document(),据我所知,QLabel没有成员函数来检索它.这可能是纯粹用Python做的,还是我必须创建一个c ++子类并为它创建新的Python绑定?

编辑以响应@ f.rodrigues的评论(因为我的回复太长而无法发表评论)

我需要做的主要事情是创建一个垂直标签,文本旋转90度.StackOverflow(以及Web的其余部分)有很多关于如何通过继承QLabel并覆盖paintEvent函数来创建它的示例.这里的问题是现在调用我的新类的paintEvent,而不是QLabel绘制事件.因此,我想在子类中拥有的QLabel.paintEvent中的任何功能都必须在子类中重写.如果你看一下QLabel :: paintEvent的源代码,可以采用一些不使用d指针就不可能的代码路径.如果我正在编写一个c ++程序,答案就是简单地使用子类'paintEvent中的d指针.

为了我的迫切需要,我能够在不使用d指针的情况下得到我需要的东西.我想知道我的问题的答案,以防我需要修改我的VerticalLabel类或需要子类化不同的Qt类.

python qt pyside

6
推荐指数
0
解决办法
159
查看次数

如何在不触发PySide中的valueChanged回调的情况下设置窗口小部件的值?

我想更新小部件的值,但为了防止无限循环,我需要阻止调用此小部件.valueChanged信号的回调函数.

以下示例完全按预期工作:

Qt = PySide

class MainWindow(Actor, Qt.QtGui.QMainWindow):
    def __init__(self):
        Qt.QtGui.QMainWindow.__init__(self)
        Actor.__init__(self)
        self.ui = Qt.loadUI('simulator.ui')
        self.ui.horizontalSlider.valueChanged.connect(self.emit_weight_msg)

    def emit_weight_msg(self, value):
        self.send({'WeightMessage': {'val': value}})

    def handle_WeightMessage(self, msg):
        self.ui.horizontalSlider.valueChanged.disconnect(self.emit_weight_msg)
        self.ui.horizontalSlider.setValue(msg["val"])
        self.ui.horizontalSlider.valueChanged.connect(self.emit_weight_msg)
Run Code Online (Sandbox Code Playgroud)

由于断开和连接valueChanged信号似乎有点像黑客,我想问是否存在更优雅的解决方案.

完整代码在这里:https://github.com/ceremcem/weighing-machine-testing

编辑

我正在寻找一种方法,比如:

def setValueSilent(QtObject, value):
    tmp_callback = QtObject.get_callback_functions_that_are_set_in_python_code()
    QtObject.valueChanged.disconnect(tmp_callback)
    QtObject.setValue(value)
    QtObject.valueChanged.connect(tmp_callback)
Run Code Online (Sandbox Code Playgroud)

signals-slots pyside

6
推荐指数
1
解决办法
4047
查看次数

pyqt QTablewidget删除滚动条以显示完整表

我有一个可向其中动态添加QTableWidgets的滚动视图。但是,QTables本身也具有滚动条,因此不会显示完整表。有没有一种方法可以禁用滚动条,以便始终显示完整的表格?

在此处输入图片说明

编辑:我添加了

    self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
    self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
Run Code Online (Sandbox Code Playgroud)

按照建议。滚动条确实消失了,但是它仍然只显示部分表格(Ican可以在表格上悬停并使用鼠标滚轮进行滚动)。窗口小部件的代码如下

from PySide.QtGui import *
from PySide.QtCore import *

class MdTable(QTableWidget):
    def __init__(self, data, depth, *args):

        QTableWidget.__init__(self, *args)
        self.hheaders = ["c1", "c2", "c3", "c4"]
        self.depth = depth
        self.bids = data
        self.setData()

    def setData(self):

        self.setRowCount(self.depth)
        self.setColumnCount(5)

        for i in xrange(self.depth):
            if len(self.data) > i:
                d1= QTableWidgetItem(str(self.data[i][0]))
                d2= QTableWidgetItem(str(self.data[i][1]))
                self.setItem(i, 1, d1)
                self.setItem(i, 2, d2)

        self.setHorizontalHeaderLabels(self.hheaders)
        self.verticalHeader().setVisible(False)
        self.resizeRowsToContents()
        self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
Run Code Online (Sandbox Code Playgroud)

python pyqt qtablewidget pyside

6
推荐指数
1
解决办法
3951
查看次数

在 Raspberry PI 4 上运行 PySide6 和 GPIO

最近我买了一台全新的 Raspberry Pi 4B,内存为 8Gb,并安装了 Ubuntu Desktop 21.04。

我的目标是在触摸屏上创建一个 GUI,用于控制 GPIO 引脚(某些硬件设备)。

由于控制 GPIO 是由 Python 完成的,所以我也想用它来编写 GUI。我看了几个教程,决定使用 PySide6 + Qt Quick。这种程序在我的个人笔记本电脑上运行良好,但当尝试下载 Raspberry 上所需的依赖项时,例如:

python3.9 -m pip install PySide6

我收到以下错误:

ERROR: Could not find a version that satisfies the requirement PySide6 (from versions: none)
ERROR: No matching distribution found for PySide6
Run Code Online (Sandbox Code Playgroud)

我认为这个问题可能是由交叉编译引起的。

您知道是否有机会在 Raspberry Pi 4B 上运行 PySide6 和 QtQuick?

更新

在采用 Manjaro ARM KDE Plasma 21.07 64 位操作系统的 Raspberry Pi 4B 上进行测试

运行以下命令:

* Update the package database …
Run Code Online (Sandbox Code Playgroud)

user-interface pyside qt-quick raspberry-pi pyside6

6
推荐指数
1
解决办法
2251
查看次数