小编Dmi*_*nev的帖子

使用Python进行PGP签名的多部分电子邮件

我目前正在尝试为我的小型电子邮件发送脚本(使用Python 3.x和python-gnupg模块)添加PGP签名支持.

签署消息的代码是:

gpg = gnupg.GPG()
basetext = basemsg.as_string().replace('\n', '\r\n')
signature = str(gpg.sign(basetext, detach=True))
if signature:
    signmsg = messageFromSignature(signature)
    msg = MIMEMultipart(_subtype="signed", micalg="pgp-sha1",
    protocol="application/pgp-signature")
    msg.attach(basemsg)
    msg.attach(signmsg)
else:
    print('Warning: failed to sign the message!')
Run Code Online (Sandbox Code Playgroud)

(这basemsgemail.message.Message类型.)

messageFromSignature函数为:

def messageFromSignature(signature):
    message = Message()
    message['Content-Type'] = 'application/pgp-signature; name="signature.asc"'
    message['Content-Description'] = 'OpenPGP digital signature'
    message.set_payload(signature)
    return message
Run Code Online (Sandbox Code Playgroud)

然后我将所有需要的标题添加到消息(msg)并发送它.

这适用于非多部分消息,但在basemsg多部分(multipart/alternativemultipart/mixed)时失败.

手动验证相应文本的签名是否有效,但Evolution和Mutt报告签名是错误的.

任何人都能指出我的错误吗?

python email gnupg pgp digital-signature

9
推荐指数
1
解决办法
3829
查看次数

覆盖PyQt中的QPaintEvents

我正在尝试创建一个具有分隔符行的TextEdit小部件.首先,我创建了一个MyTextEdit类(作为a的子类QTextEdit)并重写了它的paintEvent()方法:

import sys
from PyQt4.QtGui import QApplication, QTextEdit, QPainter

class MyTextEdit(QTextEdit):
    """A TextEdit widget derived from QTextEdit and implementing its
       own paintEvent"""

    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawLine(0, 10, 10, 10)
        QTextEdit.paintEvent(self, event)

app = QApplication(sys.argv)
textEdit = MyTextEdit()
textEdit.show()

sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

尝试执行此代码,我收到了很多以下错误:

QPainter::begin: Widget painting can only begin as a result of a paintEvent
QPainter::begin: Widget painting can only begin as a result of a paintEvent
...
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

qt qt4 pyqt pyqt4 qtgui

5
推荐指数
1
解决办法
2374
查看次数

如何使用C++在QT中的QInputDialog中隐藏"取消"按钮?

#include <QtGui>

int main (int argc, char* argv[]) 
{ 
    QApplication app(argc, argv); 
    QTextStream cout(stdout, QIODevice::WriteOnly);     

    // Declarations of variables
    int answer = 0; 

    do {
        // local variables to the loop:
        int factArg = 0;
        int fact(1);
        factArg = QInputDialog::getInteger(0, "Factorial Calculator",
            "Factorial of:");
        cout << "User entered: " << factArg << endl;
        int i=2;
        while (i <= factArg) {
            fact = fact * i;
            ++i;
        }
        QString response = QString("The factorial of %1 is %2.\n%3")
            .arg(factArg).arg(fact)  
            .arg("Do you want …
Run Code Online (Sandbox Code Playgroud)

c++ qt4

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

PyQt中的paintEvent()被不必要地调用

我正在使用PyQt4,我想根据用户点击现有图像绘制一条线,该图像显示为图像标签.图像正确显示,单击工具栏中的图标后,用户将在图像上绘制一条线.

我已经覆盖mousePressEvent()mouseReleaseEvent()获得x,y位置.我已经定义paintEvent()了画线.

def mousePressEvent(self,event):
    self.startx=event.x()
    self.starty=event.y()

def mouseReleaseEvent(self,event):
    self.endx=event.x()
    self.endy=event.y()

def paintEvent(self,event):
    painter=QPainter()
    painter.begin(self)
    painter.setPen(QPen(Qt.darkGray,3))
    painter.drawLine(self.startx,self.starty,self.endx,self.endy)
    painter.end()
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 因为我用于selfmouseevents,错误说: 对象没有属性'self.startx' - (我应该如何将一个小部件与PyQt中的mouseevents相关联?)
  2. paintEvent() 即使我在应用程序周围移动鼠标也会被调用.

提前致谢…

qt4 pyqt4

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

这是python的正常行为吗?

在最新的Python(3.2)中:

>>> l = [{}]*2
>>> l[1]['key'] = 'value'
>>> l
[{'key': 'value'}, {'key': 'value'}]
Run Code Online (Sandbox Code Playgroud)

我希望我能[{}, {'key': 'value'}]在这次行动之后.是正常行为还是错误?

python dictionary list

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

标签 统计

qt4 ×3

pyqt4 ×2

python ×2

c++ ×1

dictionary ×1

digital-signature ×1

email ×1

gnupg ×1

list ×1

pgp ×1

pyqt ×1

qt ×1

qtgui ×1