我有两个档案游戏.py以及地图.py. 其中包含以下简化代码:
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from datetime import *
from map import *
class Game:
Scene = QGraphicsScene
View = QGraphicsView
@staticmethod
def start():
Game.App = QApplication(sys.argv)
Game.Scene=QGraphicsScene();
Game.Scene.setBackgroundBrush(QBrush(QColor(Qt.green)));
Game.View=QGraphicsView(Game.Scene);
print Game
map=Map()
Game.App.exec_()
if __name__=='__main__':
Game.start()
和文件地图.py公司名称:
^{pr2}$跑步游戏.py结果
__main__.Game
game.Game
<class 'PyQt4.QtGui.QGraphicsView'>
Traceback (most recent call last):
File "/home/abiusx/workspace/borj/trunk/game.py", line 119, in <module>
Game.start()
File "/home/abiusx/workspace/borj/trunk/game.py", line 66, in start
map=Map()
File "/home/abiusx/workspace/borj/trunk/map.py", line 16, in __init__
v.setWindowTitle("asb")
TypeError: QWidget.setWindowTitle(QString): first argument of unbound method must have type 'QWidget'
问题是,代码地图.py引用游戏。查看,将其检测为类(在类主体中定义),但不检测覆盖在其上的内容(实际实例)。 游戏也被称为main游戏.py但是作为游戏。游戏在地图.py在
有人能帮我吗?在
每当在Python中读取一个文件时,当它到达一个类定义时,它就会定义该类。在
在我的场景中,游戏和地图都是相互依赖的。这是python中一个众所周知的循环引用问题。 我又加了一个模块,主.py,在其中使用了游戏和地图,在地图中使用了游戏。问题解决了。在
这是因为
View = QGraphicsView
将其设置为一个类。它只在您运行Game.start
时成为一个实例。(老实说,我不明白最初为什么要将这个类变量设置为class
对象,或者为什么Game
类存在。)当您将模块作为脚本运行时,模块名称将更改为
__main__
。在相关问题 更多 >
编程相关推荐