前几天开始的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. vm虚拟机Kali2.0实现与物理机之间的文件拖动共享

    MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,ab ...

  2. IOS缓存管理之YYCache使用

    前言: 最近一直在致力于为公司app添加缓存功能,为了寻找一个最佳方案,这几天先做个技术预研,经过这两天的查找资料基本上确定了两个开源框架进行选择,这两个开源框架分别是:PINCache.YYCach ...

  3. eclipse下进行spark开发(已实践)

    开发准备: jdk1.8.45 spark-2.0.0-bin-hadoop2.7(windows下和linux个留一份) Linux系统(centos或其它) spark安装环境 hadoop-2. ...

  4. C# Windows 异步线程

      Task t = new Task(new Action(() =>                     {                         //推送产品         ...

  5. opensessioninviewFilter导致org.hibernate.NonUniqueObjectException

    起因: 公司业务需求,增加了一个新的数据源,增加之后,起初一切正常,但是发现后台管理系统所有Ajax请求获取信息没有问题,但是涉及到保存操作就抛出异常. 异常: org.hibernate.NonUn ...

  6. 学习H5一周随笔

    H5学习也已经进行了一个周了,除了学习过程中的乱哄哄的脑子,对H5初学者(我)常见的问题有了如下见解. 1.初学者在建立新的Html文件之后,有时候会把 <meta charset=" ...

  7. Mac上关于shell使用Python3和C++11声明

    1.使用Python3 Mac上的shell上自带的Python版本是2.7,当需要使用Python3时,下载安装好Python时,在shell上敲入Python发现却还是显示Python2.7,这是 ...

  8. struts2(一) struts2入门

    首先推荐一本书,虽然我还没看过,但是我以后肯定会看的,<Struts+技术内幕>提取密码:kg6w .现在只是停留在会使用struts2的层次,自己也想继续深入研究,但是感觉自己的知识面还 ...

  9. No module named machinery

    py2exe模块0.9版本只支持python3以上,要想在python2.7中运用,就要下载0.6 版本的py2exe http://sourceforge.net/projects/py2exe/f ...

  10. applicationContext.xml的配置

    想必用过Spring的程序员们都有这样的感觉,Spring把逻辑层封装的太完美了(个人感觉View层封装的不是很好).以至于有的初学者都不知道Spring配置文件的意思,就拿来用了.所以今天我给大家详 ...