在在Windows上的pyqt5程序内存正常,而在银河麒麟上使用pyqt5程序频繁调用setstylesheet导致内存持续增加,问下大家如何解决这个问题。
预加载。
【相关推荐】
在使用setStyleSheet()函数设置窗口背景时,需要以background-color或者border-image的方式来进行设置,其中background-color可以设置窗口的背景颜色,而border-image可以设置窗口的背景图片。
通过setStyleSheet()函数来设置窗口背景颜色的代码如下:
MainWindow.setStyleSheet("#MainWindow{background-color:red}")
在使用setStyleSheet()函数设置窗口的背景色之后,窗口中的控件会继承窗口的背景色,如果想要为控件设置背景图片或者图标,需要使用setPixmap或者setIcon()函数来实现。
在使用setStyleSheet()函数设置背景图片时,需要设置包括背景图片的文件夹,因为代码会用到图片的路径,这里将图片文件夹放到与.py文件同一目录下的image文件下。
之后在Pycharm项目中的代码添加:
MainWindow.setStyleSheet("#MainWindow{border-image:url(image/back.jpg)}") # 设置背景图片
除了在setStyleSheet()函数中使用border-image方式设置窗口的背景图片外,还可以使用background-image方式进行设置:
MainWindow.setStyleSheet("MainWindow{background-image:url(image/back.jpg)}")
但是这种方式显示的背景图片是平铺显示
人的肉眼识别不了太高频率的界面刷新,计算机的刷新频率也存在性能的局限性。
所以我们没有必要非得来一个信号就刷新一次。
可以采用定时器+标志位的方式刷新界面:
标志位初始为false,当界面有更新时将标志位设置为true;
定时器定时每隔200ms检查标志位,为true则刷新界面,然后将标志位设置为false
你的肉眼根本来不及看200ms内的界面变化,界面刷新一次200ms也足够长了