我正在使用 Twisted 和 PyQt 在 python 中编写应用程序。我面临的问题是,当我扭曲代码中的一个函数被执行时,我必须在 GUI 中打印一行,我试图通过发出信号(非 PyQt 类)来实现这一点。这似乎不起作用,我怀疑扭曲的事件循环正在为 PyQt 搞砸事情。因为 closeEvent 信号没有被程序捕获。
这是代码片段:
from PyQt4 import QtGui, QtCore
import sys
from twisted.internet.protocol import Factory, Protocol
from twisted.protocols import amp
import qt4reactor
class register_procedure(amp.Command):
arguments = [('MAC',amp.String()),
('IP',amp.String()),
('Computer_Name',amp.String()),
('OS',amp.String())
]
response = [('req_status', amp.String()),
('ALIGN_FUNCTION', amp.String()),
('ALIGN_Confirmation', amp.Integer()),
('Callback_offset',amp.Integer())
]
class Ui_MainWindow(QtGui.QMainWindow):
def __init__(self,reactor, parent=None):
super(Ui_MainWindow,self).__init__(parent)
self.reactor=reactor
self.pf = Factory()
self.pf.protocol = Protocol
self.reactor.listenTCP(3610, self.pf) # listen on port 1234
def setupUi(self,MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(903, 677)
self.centralwidget = …Run Code Online (Sandbox Code Playgroud) 我试图将文本编辑器的内容保存为pdf文件.文本编辑器是使用PyQt制作的(我没有制作文本编辑器),我从这里获得了文本编辑器的代码.我对编辑器做了一些更改,但这不会成为问题.
经过一些初步的研究后,我发现我需要使用ReportLab来发布一个pdf文件.但我找不到办法做到这一点.
有谁知道如何实现这一目标?
我想要做的是,我想制作一个带有可检查项目的listView.我能够使用QStandardItemModel作为我的模型.现在我需要做的是添加一些需要自定义数据方法的功能.正如我们所做的那样,我将QStandardItemModel分类为一个类,并将其指定为listView的模型.现在我遇到的问题是,listView只显示文本而没有检查选项.
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
from random import randint
class rrap(QStandardItemModel):
def __init__(self ,parent = None):
QStandardItemModel.__init__(self,parent)
self.d = QStandardItem(QString("asd"))
self.d.setCheckable(True)
self.d.setFlags(Qt.ItemIsUserCheckable| Qt.ItemIsEnabled)
self.appendRow(self.d)
def data(self , index , role):
if role == Qt.ToolTipRole:
return self.d
if role == Qt.DisplayRole:
return self.d.text()
app = QApplication(sys.argv)
view = QListView()
model = rrap()
view.setModel(model)
view.show()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试的一段代码.我在网上搜索,找到显示如何自定义QStandardItemModel的任何示例,但没有得到一个.
我在python中使用smtpd模块创建了一个SMTP服务器.我已经能够收到电子邮件并将它们存储在sqlite数据库中,但问题是我不知道如何检索它们.
我尝试使用以下代码,但我不确定它是否可靠.
import smtpd
import asyncore
import sqlite3
import datetime
import dol # custom module that i have created to do authentication while retrieving the email
import threading
class CustomSMTPServer(smtpd.SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data):
print 'Receiving message from:', peer
print 'Message addressed from:', mailfrom
print 'Message addressed to :', rcpttos
print 'Message length :', len(data)
print "Message :",data
print data.split("\n\n")
smtp_auth_cursor.execute("SELECT username FROM smtp_auth_table")
smtp_entry=smtp_auth_cursor.fetchall()
print smtp_entry
subject="project"
for x in smtp_entry:
x=x[0]
name=x+"@example.com"
if x in name: …Run Code Online (Sandbox Code Playgroud) 我只是注意到,当我运行pyqt应用程序并关闭它时,该应用程序将关闭,但是该过程仍然有效。显然,即使关闭了应用程序,正在运行的进程也不会关闭。
Traceback (most recent call last):
File "F:\Projects\XYZ\XYZ\XYZ.py", line 414, in <module>
sys.exit(app.exec_())
SystemExit: 0
Run Code Online (Sandbox Code Playgroud)
当我在线搜索时,它说如果返回值为0,这是正常终止。如您所见,在我运行该应用程序时,该过程一直在堆积。

那么我该如何克服这个问题呢?
我想当用户按下按钮时,MainWindow被阻止等待表单填写后会出现一个表单