首先,出于兼容性原因,我使用Windows 7-64位与PyQwt5.2.0,PyQt4.5.4,NumPy1.3.0,python2.6.2 32位.
在运行我的脚本时,会出现:
QWidget: Must construct a QApplication before a QPaintDevice
Run Code Online (Sandbox Code Playgroud)
在网上冲浪,寻找某种方法来修复它,我得到了QWidget继承QObject和QPaintDevice(并且它几乎每个对象都继承了它),并且QMainWindow继承了QWidget.我也得到了一些静态函数试图使用某些类,但我真的不明白它的含义.
如果有人可以解释一下,我会非常感激.
PS:对于任何翻译错误,我们深表歉意.
从代码中,错误是由于第102行引起的.在加载模块时,您创建了一个QWidget(更准确地说是a QMainWindow).而这种情况发生之前的QApplication创建.
另外,我不知道为什么你有这个起始变量,因为似乎没有使用它.
如果要使用HelloBegin对象创建它,请在__init__方法中移动它.
编辑:
如果要在加载模块时显示启动画面,则需要通过小巧轻便的模块启动应用程序.在本单元中,您将:
为了使所有工作顺利进行,我将在单独的函数中导入模块,并使用一个小技巧确保它只在GUI准备好后启动.代码如下所示:
from PyQt4.QtGui import QApplication
from PyQt4.QtCore import QTimer
def startApp():
import m1
import m2
wnd = createWindow()
wnd.show()
import sys
app = QApplication(sys.argv)
splash = createSplashScreen()
splash.show()
QTimer.singleShot(1, startApp) # call startApp only after the GUI is ready
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
createSplashScreen创建启动画面的功能在哪里