setup.py如下:
# setup.py
from distutils.core import setup
import py2exe
setup(windows=["loadMain.py"])
#用的是GUI
python setup.py py2exe 时会报 找不到qt4 sip等
所以还要加上 -p PyQt4,sip
这样就成功了。
问题:使用qtdesigner产生ui文件后有两种方式使用,1,手动使用继承或直接使用的方式来
添加信号,槽,和调用函数的连接;2,使用uic。
手动的就比较简单了,添加2句话就可以。uic大概是这样:
#!/usr/bin/env python
import sys,os
from PyQt4 import QtCore, QtGui, uic
from xml.etree.cElementTree import parse
class DemoImpl(QtGui.QDialog):
def __init__(self, *args):
QtGui.QWidget.__init__(self, *args)
uic.loadUi("main.ui", self)
self.exefile=""
self.exdir="."
self.paramList=[]
@QtCore.pyqtSignature("")
def on_pushButton_2_clicked(self):
self.exefile=self.setOpenFileName()
self.lineEdit.setText(self.exefile)
问题就出在这里了,使用uic方式时,打包的结果是可以成功的,但运行会报错。
log:Traceback (most recent call last):
File "uicload.py", line 4, in <module>
File "PyQt4"uic"__init__.pyc", line 7, in <module>
File "PyQt4"uic"Compiler"compiler.pyc", line 9, in <module>
File "PyQt4"uic"uiparser.pyc", line 16, in <module>
ImportError: No module named elementtree.ElementTree
根据kde。org riverband,等几个地方解决方案也还是没有找到,看来这个问题得下一个版本才能
解决了。
于是回头我不用uic方式,改用继承写的,打包结果是可以使用的。
这是运行的实例,外观使用的plastique。打包结果会多许多没用的,比如tk,tcl包,都可以删掉的。