换行的时候,一般是4个空格的间距就可以写下一行的代码
字典建立一对多的映射关系,如下图,声明后不初始化,直接添加元素
通过一个字典遍历取出另一个字典里的数据:
a=dict((("1", "4"), ("2", "3"))) b={} b["1"]={"x": 50, "y": 50} b["2"]={"x": 100, "y": 50} b["3"]={"x": 50, "y": 100} b["4"]={"x": 100, "y":100} for key,value in a.items(): print(key,b.get(key).get("x"),b.get(key).get("y"),value,b.get(value).get("x"),b.get(value).get("y"))
output:
perfect
删除一个对象的引用
del objectname
引用另一个对象的属性:
先建立一个公共类。然后直接调用即可,甚至都不需要使用类名。
http://www.runoob.com/python/python-object.html 菜鸟这里是使用类名调用的属性,我的是下面的情况:
这两个字典都不在此类中。而是在同一文件的另一个类中。我不熟悉python,所以就不好解释,后面有空再来了解。
eric6 试试怎么让界面不自动跳转:就是不让它检查,把下面的automatic syntax check的勾去掉即可。
后面尝试后完美成功。
eric6 快速到达各个类和方法的功能还是不错的。如下图:
pyqt5的界面刷新问题:
如下图:
我想要我左上角的点确定之后,右下角的点即刻连线。 由于QGraphicsItem的paint方法需要特定情况下才能触发,比如放大缩小窗口,或者移动到显示屏外面再移动进来,所以,我之前都是按完之后,移动一下窗口才能把线条显示出来。
右下角的是
self.graphicsView.scene = QtWidgets.QGraphicsScene(0, 0, 1000, 1000)
生成的scene。
解决方法:在左上角的按键处理事件中添加 :
self.graphicsView.scene.update()
即可。这样,你每次确认连线之后,右下角的线条都会自动显示。也就是手动调用了里面全部items的paint方法。
还遇到一种情况,就是在item里面写文字,然后晃多两次界面,文字就恢复不了了。如:
然后本来应该是:
这样的。
代码如下:
关键在于红色所指处,这里把区域放在了上面,也就是在负值内画,不在上面的bound ingRect返回的范围内,然后我反手把-10改为了30,然后就不会出现擦除的现象了。按理说改上面的返回区域也是可以的,这里就不深入尝试了。关键字:QGraphicsItem boundingRect
所以,总结一下就是:如果出现界面刷新不成功的问题,首先看画的东西在不在boundingRect的返回区域内,然后是update。
python从大到小遍历:
for i in range (14,0,-1): print(i)
区别在于后面多了-1.输出如下:
ok
python 将对象置空:
self.item = None
注意啊!python是区分大小写的,所以别把None 写成了none!
python判断对象是否拥有某个属性:
if hasattr(self, "item"): print("您有item这个属性") if self.item != None: self.graphicsView.scene.removeItem(self.item) self.graphicsView.scene.update() else: print("您没有item属性")
OK