前几天开始的pygame音乐播放器Doco,做的差不多了,上午做到了歌词显示和搜索页面.遇到bug,即通过resize改变ui大小时ListWidget显示异常


#目的:

  增加一部分窗口用来显示歌词和搜索页面.也就是在原来播放器的基础上通过resize增加窗口宽度,然后增加相应的内容.

#test

  由于Doco代码过于臃肿,笔者来一个test来描述上午遇到的问题吧.

首先,欲改变ui宽度,则想到resize

Test.resize(852, 714)
#设置高和宽
Test.setFixedSize(852, 714)
#设置调整宽和高

#测试代码:

  来个test的完整代码:

# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'Test.ui'
#
# Created: Sun Apr 2 21:46:12 2017
# by: PyQt5 UI code generator 5.2.1
#
# WARNING! All changes made in this file will be lost! #code by dearvee
import sys
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Test(object):
def setupUi(self, Test):
Test.setObjectName("Test")
Test.resize(852, 714)
Test.setFixedSize(852, 714)
self.lineEdit = QtWidgets.QLineEdit(Test)
self.lineEdit.setGeometry(QtCore.QRect(150, 20, 200, 41))
self.lineEdit.setObjectName("lineEdit")
self.listWidget = QtWidgets.QListWidget(Test)
self.listWidget.setGeometry(QtCore.QRect(0, 140, 420, 421))
self.listWidget.setObjectName("listWidget")
self.toolButton = QtWidgets.QToolButton(Test,clicked=lambda:self._resize(Test))
self.toolButton.setGeometry(QtCore.QRect(0, 20, 41, 41))
self.toolButton.setObjectName("toolButton") self.retranslateUi(Test)
QtCore.QMetaObject.connectSlotsByName(Test) def retranslateUi(self, Test):
_translate = QtCore.QCoreApplication.translate
Test.setWindowTitle(_translate("Test", "Test"))
self.toolButton.setText(_translate("Test", "<")) def _resize(self,Test):
Test.resize(420, 714)#420, 714
Test.setFixedSize(420, 714) if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Test()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())

现在当点击<按钮,则Test的宽度减少,功能实现.

#运行效果:

#发现bug:

  点击<按钮后宽度变小,但listwidget颜色变成了黑色,当鼠标移入时,恢复正常,这当然不是想要的效果,笔者暂时还不知道造成这种情况的原因所在.

#debug:

  网上粗略的找了一下,没有找到相同问题的解决办法.尝试在<按钮上,增加刷新listwidget事件,成功解决问题.

self.listWidget.clear()#清空list

当然,这里笔者用的listwidget为空表,直接clear即可,如果里面有item,亦刷新即可.

下面debug后完整代码:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'Test.ui'
#
# Created: Sun Apr 2 21:46:12 2017
# by: PyQt5 UI code generator 5.2.1
#
# WARNING! All changes made in this file will be lost! import sys
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Test(object):
def setupUi(self, Test):
Test.setObjectName("Test")
Test.resize(852, 714)
Test.setFixedSize(852, 714)
self.lineEdit = QtWidgets.QLineEdit(Test)
self.lineEdit.setGeometry(QtCore.QRect(150, 20, 200, 41))
self.lineEdit.setObjectName("lineEdit")
self.listWidget = QtWidgets.QListWidget(Test)
self.listWidget.setGeometry(QtCore.QRect(0, 140, 420, 421))
self.listWidget.setObjectName("listWidget")
self.toolButton = QtWidgets.QToolButton(Test,clicked=lambda:self._resize(Test))
self.toolButton.setGeometry(QtCore.QRect(0, 20, 41, 41))
self.toolButton.setObjectName("toolButton") self.retranslateUi(Test)
QtCore.QMetaObject.connectSlotsByName(Test) def retranslateUi(self, Test):
_translate = QtCore.QCoreApplication.translate
Test.setWindowTitle(_translate("Test", "Test"))
self.toolButton.setText(_translate("Test", "<")) def _resize(self,Test):
Test.resize(420, 714)#420, 714
Test.setFixedSize(420, 714)
self.listWidget.clear()#清空list if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Test()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())

运行此程序,成功解决了问题.

至此,关于上午遇到的 listwidget以resize改变窗体宽度时显示异常问题的解决办法叙述完毕.

来一个音乐播放器Doco的截图,暂时还没有找到合适的素材,有点丑Q_Q:

PyQt通过resize改变窗体大小时ListWidget显示异常的更多相关文章

  1. 火狐浏览器不支持location.reload()(以改变页面大小时重新刷新页面为例)

    背景:当页面大小改变时需要重新刷新页面,以适应相应的尺寸 解决方法: var url = window.location.href; var parm = parseInt(Math.random() ...

  2. openGL如何在改变窗口大小时,使自己的图形不被拉伸

    这里要注意两个概念:视口和视景体,当视口的纵横比和视景体的纵横比相同的时候,改变窗口大小,图像才不会变形: 视景体是指成像景物所在空间的集合.它是一个空间集合体. 单个的视景体,比如一个球体,若要完全 ...

  3. resize([[data],fn]) 当调整浏览器窗口的大小时,发生 resize 事件。

    resize([[data],fn]) 概述 当调整浏览器窗口的大小时,发生 resize 事件.   参数 fnFunctionV1.0 在每一个匹配元素的resize事件中绑定的处理函数.直线电机 ...

  4. delphi SetWindowPos改变窗体位置和状态

    http://blog.163.com/yuanliaofan@126/blog/static/1730690722012534428814/ delphi SetWindowPos改变窗体位置和状态 ...

  5. WPF实现无边框窗体拖拽右下角▲ 改变窗体大小【framwork4.0】 谢谢大家关注

    效果图:(右下角拖拽改变窗体大小) 第一步:添加xaml代码: <Border Name="ResizeBottomRight" MouseMove="Resize ...

  6. 排查在 Azure 中创建、重启 Windows VM 或调整其大小时发生的分配失败

    创建 VM.重新启动已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源. 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误. 本文说明一些常见分配 ...

  7. 排查在 Azure 中创建、重启 Linux VM 或调整其大小时发生的分配故障

    创建 VM.重启已停止(解除分配)的 VM 和重设 VM 大小时,Azure 会为订阅分配计算资源. 执行这些操作时,即使尚未达到 Azure 订阅限制,也可能偶尔收到错误. 本文说明一些常见分配故障 ...

  8. 变不可能为可能 - .NET Windows Form 改变窗体类名(Class Name)有多难?续篇

    发布<.NET Windows Form 改变窗体类名(Class Name)有多难?>转眼大半年过去了,要不是在前几天有园友对这篇文章进行评论,基本上已经很少关注它了,毕竟那只是一个解惑 ...

  9. [译]GLUT教程 - 改变窗体大小

    Lighthouse3d.com >> GLUT Tutorial >> Basics >> Resizing the Window 上一章的例子创建了两个窗体,命 ...

随机推荐

  1. APP中的 H5和原生页面如何分辨、何时使用

    一.APP内嵌H5和原生的区别 1.原生的页面运行速度快,比较流畅. H5页面相对原生的运行性能低,特别是一些动画效果有明显卡顿. 2.H5页面的很多交互都没有原生的好,比如弹层.输入时候的页面滑动 ...

  2. 二cha树

    void porder(BTree *b) { BTree *St[MaxSize],*p; ; if(b!=NULL) { top++; St[top]=b; ) { p=St[top]; top- ...

  3. Android Weekly Notes Issue #245

    Android Weekly Issue #245 February 19th, 2017 Android Weekly Issue #245 本期内容: 写好单元测试的几条原则; 如何mock Ko ...

  4. php审核操作

    注册页面zhuce.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http ...

  5. 面对考试毫无畏惧的SSH

    [Struts+Spring+Hibernate] 新建一个项目 把SSH jar包(包含mysql.oracle.jackson等包在里面) 把web.xml复制到WebContent\WEB-IN ...

  6. 点击Robot Framework的桌面快捷图标后,没有反应(没有打开应用程序)

    http://www.cnblogs.com/zhengyihan1216/p/6397478.html  这篇文章中介绍了如何安装Robot Framework以及如何在桌面上创建快捷方式. 但是有 ...

  7. Java设计模式之《组合模式》及应用场景

    摘要: 原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/6489827.html 组合模式,就是在一个对象中包含其他对象,这些被包含的对象可能是 ...

  8. Docker私有仓库--自签名方式

    为了能集中管理我们创建好的镜像,方便部署服务,我们会创建私有的Docker仓库.通读了一遍官方文档,Docker为了确保安全使用TLS,需要CA认证,认证时间长的要钱啊,免费过期时间太短,还是用自签名 ...

  9. 算法模板——sap网络最大流 3(递归+邻接矩阵)

    实现功能:同之前 可以看见的是这次的程序优美了许多,代码简短了一倍还多,可是速度却是和原来的邻接表一个级别的(在Codevs上面草地排水那题的运行时间比较,但是显然数据很大时应该比那个慢些),原理差不 ...

  10. 说说MySQL中的Redo log Undo log都在干啥

        在数据库系统中,既有存放数据的文件,也有存放日志的文件.日志在内存中也是有缓存Log buffer,也有磁盘文件log file,本文主要描述存放日志的文件.     MySQL中的日志文件, ...