我目前正在尝试为我的小型电子邮件发送脚本(使用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)
(这basemsg
是email.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/alternative
或multipart/mixed
)时失败.
手动验证相应文本的签名是否有效,但Evolution和Mutt报告签名是错误的.
任何人都能指出我的错误吗?
我正在尝试创建一个具有分隔符行的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)
我究竟做错了什么?
#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) 我正在使用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)
self
mouseevents,错误说:
对象没有属性'self.startx' - (我应该如何将一个小部件与PyQt中的mouseevents相关联?) paintEvent()
即使我在应用程序周围移动鼠标也会被调用.提前致谢…
在最新的Python(3.2)中:
>>> l = [{}]*2
>>> l[1]['key'] = 'value'
>>> l
[{'key': 'value'}, {'key': 'value'}]
Run Code Online (Sandbox Code Playgroud)
我希望我能[{}, {'key': 'value'}]
在这次行动之后.是正常行为还是错误?