小编Bin*_*ian的帖子

包含#include指令的宏定义

有没有办法定义一个#include 在其体内包含指令的宏?

如果我只是把" #include",它给出了错误

C2162: "expected macro formal parameter"
Run Code Online (Sandbox Code Playgroud)

因为在这里我不是#用来连接字符串.
如果我使用" \# include",那么我收到以下两个错误:

error C2017: illegal escape sequence
error C2121: '#' : invalid character : possibly the result of a macro expansion
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

c c++ macros c-preprocessor

34
推荐指数
5
解决办法
3万
查看次数

多处理问题[pyqt,py2exe]

我正在使用PyQt4编写GUI程序.我的主窗口中有一个按钮,单击此按钮.我希望启动一个后台进程,它是一个派生自processing.Process的类的实例.

class BackgroundTask(processing.Process):
    def __init__(self, input):
        processing.Process.__init__(self)
        ...

    def run(self):
        ...
Run Code Online (Sandbox Code Playgroud)

(请注意,我使用的 是从http://code.google.com/p/python-multiprocessing/获取的python-multiprocessing的Python2.5端口, 这就是为什么它正在处理.Process而不是multiprocessing.Process.我猜这不应该有所作为.我是对的吗?)

连接到按钮点击信号的代码简直就是这样

 processing.freezeSupport()
 task = BackgroundTask(input)
 task.start()
Run Code Online (Sandbox Code Playgroud)

该程序在python intepreter下按预期工作,即它是从命令行"python myapp.py"启动的.

但是,在我使用py2exe打包程序后,每次单击该按钮时,都会弹出主窗口的副本,而不是启动后台任务.我不确定这种行为的原因是什么.我想这与http://docs.python.org/library/multiprocessing.html#multiprocessing-programming中提到的以下注释有关.

"这个包中的功能要求主要方法可由子进程导入.这在编程指南中有所涉及,但值得指出这一点.这意味着一些例子,例如multiprocessing.Pool示例在交互式解释器中不起作用"

如果name ==" main ",我唯一拥有的地方就是在主模块中,就像典型的pyqt程序一样

if __name__ == "__main__":
    a = QApplication(sys.argv)
    QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
    w = MainWindow()
    w.show()
    a.exec_()
Run Code Online (Sandbox Code Playgroud)

有关如何解决此问题的任何解决方案?谢谢!

python pyqt py2exe multiprocessing

16
推荐指数
1
解决办法
6131
查看次数

监视Windows内存映射文件

在Windows中,如何跟踪CreateFileMapping()创建的文件映射对象?基本上我想知道正在使用多少内存映射文件以及它们的名称,大小等信息.谢谢!

windows memory-management memory-mapped-files

11
推荐指数
1
解决办法
8883
查看次数

将blob图像数据加载到QPixmap中

我正在使用PyQt4编写一个用于前端GUI的程序,该程序访问后端数据库(可以是MySQL或SQLite).我需要在数据库中存储一些图像数据,下面是我用来将图像文件(JPEG格式)导入数据库中的blob数据字段的Python代码:

def dump_image(imgfile):
    i = open(imgfile, 'rb')
    i.seek(0)
    w = i.read()
    i.close()
    return cPickle.dumps(w,1)

blob = dump_image(imgfile)
hex_str = blob.encode('hex') 
# x"%s"%hex_str will be the string inserted into the SQL command
Run Code Online (Sandbox Code Playgroud)

这部分工作正常.我的问题是如何从PyQt4中存储在数据库中的图像数据创建QPixmap对象.我目前的方法涉及以下步骤:

(1)数据库中的Hex str - cPickle&StringIO - > PIL图像对象

def load_image(s):
    o = cPickle.loads(s)
    c = StringIO.StringIO()
    c.write(o)
    c.seek(0)
    im = Image.open(c)
    return im
Run Code Online (Sandbox Code Playgroud)

(2)PIL图像对象 - >临时图像文件

(3)临时图像文件 - > QPixmap

这种方法也很好.但是如果我不必编写/读取临时图像文件会更好,这可能会减慢程序对用户交互的响应速度.我想我可以使用QPixmap :: loadFromData()从数据库中存储的blob数据直接加载,希望这里有人可以给我看一个如何使用这个函数的例子.

TIA,

python blob image pyqt qpixmap

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