wpf 放大缩小界面_python pyqt5 学习笔记 scene 界面刷新问题 update方法

换行的时候,一般是4个空格的间距就可以写下一行的代码

字典建立一对多的映射关系,如下图,声明后不初始化,直接添加元素

57eb7f9343c6e141748d0005282c1686.png

通过一个字典遍历取出另一个字典里的数据:

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:

6c73926b51d973fcb5ec606da8f1ff46.png

perfect

删除一个对象的引用

del objectname

引用另一个对象的属性:

先建立一个公共类。然后直接调用即可,甚至都不需要使用类名。

http://www.runoob.com/python/python-object.html 菜鸟这里是使用类名调用的属性,我的是下面的情况:

wpf 放大缩小界面_python pyqt5 学习笔记 scene 界面刷新问题 update方法_第1张图片

这两个字典都不在此类中。而是在同一文件的另一个类中。我不熟悉python,所以就不好解释,后面有空再来了解。

eric6 试试怎么让界面不自动跳转:就是不让它检查,把下面的automatic syntax check的勾去掉即可。

wpf 放大缩小界面_python pyqt5 学习笔记 scene 界面刷新问题 update方法_第2张图片

后面尝试后完美成功。

eric6 快速到达各个类和方法的功能还是不错的。如下图:

wpf 放大缩小界面_python pyqt5 学习笔记 scene 界面刷新问题 update方法_第3张图片

pyqt5的界面刷新问题:

如下图:

wpf 放大缩小界面_python pyqt5 学习笔记 scene 界面刷新问题 update方法_第4张图片

我想要我左上角的点确定之后,右下角的点即刻连线。 由于QGraphicsItem的paint方法需要特定情况下才能触发,比如放大缩小窗口,或者移动到显示屏外面再移动进来,所以,我之前都是按完之后,移动一下窗口才能把线条显示出来。

右下角的是

self.graphicsView.scene = QtWidgets.QGraphicsScene(0, 0, 1000, 1000)

生成的scene。

解决方法:在左上角的按键处理事件中添加 :

self.graphicsView.scene.update()

即可。这样,你每次确认连线之后,右下角的线条都会自动显示。也就是手动调用了里面全部items的paint方法。

还遇到一种情况,就是在item里面写文字,然后晃多两次界面,文字就恢复不了了。如:

wpf 放大缩小界面_python pyqt5 学习笔记 scene 界面刷新问题 update方法_第5张图片

然后本来应该是:

wpf 放大缩小界面_python pyqt5 学习笔记 scene 界面刷新问题 update方法_第6张图片

这样的。

代码如下:

wpf 放大缩小界面_python pyqt5 学习笔记 scene 界面刷新问题 update方法_第7张图片

关键在于红色所指处,这里把区域放在了上面,也就是在负值内画,不在上面的bound ingRect返回的范围内,然后我反手把-10改为了30,然后就不会出现擦除的现象了。按理说改上面的返回区域也是可以的,这里就不深入尝试了。关键字:QGraphicsItem boundingRect

所以,总结一下就是:如果出现界面刷新不成功的问题,首先看画的东西在不在boundingRect的返回区域内,然后是update。

python从大到小遍历:

for i in range (14,0,-1):
    print(i)

区别在于后面多了-1.输出如下:

wpf 放大缩小界面_python pyqt5 学习笔记 scene 界面刷新问题 update方法_第8张图片

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

你可能感兴趣的:(wpf,放大缩小界面)