一、最小话托盘后,调用showNormal()后窗口不刷新,解决办法如下:

重写showNormal 方法,调用父类方法后,repaint窗体

  1. def showNormal(self):
  2.     super(LcdTime, self).showNormal()
  3.     self.repaint()

二、透明显示窗口后无法拖动窗体:

必须拖动非透明区域,比如数字,目前没有找到好的解决方案。

  1. # -*- coding: utf-8 -*-
  2. import sys
  3. from PyQt4 import QtCore, QtGui
  4. class LcdTime(QtGui.QDialog):
  5.     def __init__(self, parent=None):
  6.         super(LcdTime, self).__init__(parent)
  7.         self.hour = QtGui.QLCDNumber(8, self)
  8.         self.hour.setGeometry(10, 10, 200, 80)
  9.         self.hour.setSegmentStyle(QtGui.QLCDNumber.Flat)
  10.         self.display()
  11.         self.timer = QtCore.QTimer()
  12.         self.connect(self.timer, QtCore.SIGNAL('timeout()'), self.display)
  13.         self.timer.start(1000)
  14.         self.build_tray()
  15.         self.resize(220, 100)
  16.         self.central()
  17.         self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
  18.         # 透明处理,移动需要拖动数字
  19.         self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
  20.         self.setMouseTracking(True)
  21.     def mousePressEvent(self, event):
  22.         if event.button() == QtCore.Qt.LeftButton:
  23.             self.dragPosition = event.globalPos() - self.frameGeometry().topLeft()
  24.             event.accept()
  25.     def mouseMoveEvent(self, event):
  26.         if event.buttons() == QtCore.Qt.LeftButton:
  27.             self.move(event.globalPos() - self.dragPosition)
  28.             event.accept()
  29.     def build_tray(self):
  30.         trayIcon = QtGui.QSystemTrayIcon(self)
  31.         trayIcon.setIcon(QtGui.QIcon('logo.png'))
  32.         trayIcon.show()
  33.         trayIcon.setToolTip('时钟')
  34.         trayIcon.activated.connect(self.trayClick)
  35.         menu = QtGui.QMenu()
  36.         normalAction = menu.addAction('正常显示')
  37.         miniAction = menu.addAction('最小化托盘')
  38.         exitAction = menu.addAction('退出')
  39.         normalAction.triggered.connect(self.showNormal)
  40.         exitAction.triggered.connect(self.exit)
  41.         miniAction.triggered.connect(self.showMinimized)
  42.         trayIcon.setContextMenu(menu)
  43.     def exit(self):
  44.         # 不设置Visible为False,退出后TrayIcon不会刷新
  45.         self.setVisible(False)
  46.         sys.exit(0)
  47.     def trayClick(self, reason):
  48.         if reason == QtGui.QSystemTrayIcon.DoubleClick:
  49.             self.showNormal()
  50.             self.repaint()
  51.     def display(self):
  52.         current = QtCore.QTime.currentTime()
  53.         self.hour.display(current.toString('HH:mm:ss'))
  54.     def showNormal(self):
  55.         super(LcdTime, self).showNormal()
  56.         self.repaint()
  57.     def central(self):
  58.         screen = QtGui.QDesktopWidget().screenGeometry()
  59.         size = self.geometry()
  60.         self.move(screen.width() - size.width(), 0)
  61. app = QtGui.QApplication(sys.argv)
  62. lcd = LcdTime()
  63. lcd.show()
  64. sys.exit(app.exec_())

PyQt4 初试牛刀二的更多相关文章

  1. PyQt4 初试牛刀一

    建立了一个MainWindow,创建最基本的菜单栏.状态栏.工具栏,并重新定义了"X"关闭的默认行为. # -*- coding: utf-8 -*- import sys fro ...

  2. redis初试牛刀

    先来无事就学学redis.可是并没有想的那么美好.首先要解释一下,redis主流是安装在lunx系统中的,甚至官网直接没有给出windows版本.要下载windows只能去所谓的githup.好吧我在 ...

  3. python初试牛刀

    需求:在L7的一台机器上做nginx配置,然后代码分发到别的所有的机器上.由于目录中有很多配置文件,而且防止误操作,需要修改配置之前先备份原配置.然后需要在运行修改配置的脚本之前,先弹出界面,告知操作 ...

  4. 周末充电之WPF(一).初试牛刀

    追的剧已经赶上更新的速度了,突然觉得一下子就闲了.趁着这点时间,刚好学点 WPF .看到这边,好多人估计得感叹技术宅约等于单身狗,哈哈.好了,赶紧进入学习状态. 关注 WPF 或者说对它感兴趣其实多半 ...

  5. HBase 2、HBase安装与初试牛刀

    官方帮助文档:http://hbase.apache.org/book.html  PDF:http://hbase.apache.org/apache_hbase_reference_guide.p ...

  6. iOS 视图调试器(Debug View Hierarchy) 之 初试牛刀

    参考:http://blog.csdn.net/th_gsb/article/details/44856795 由于iOS的界面开发大多都是用代码实现的,编写的时候,那就是看不见摸不着的情况.所以,如 ...

  7. [学习OpenCV攻略][003[初试牛刀——显示图片]

    cvLoadImage(路径) 加载指定路径的图片到内存 cvNamedWindow("窗口名称", 属性) 创建窗口,窗口名称用来被其他函数引用,属性:0表示窗口大小不变,CV_ ...

  8. OpenCV:初试牛刀-带滚动条的视频播放-2

    视频播放时点击窗口关闭按钮(即小叉号)关闭窗口 隐藏console控制台 使用VideoCapture和createTrackbar实现滚动条控制视频播放 #include<iostream&g ...

  9. OpenCV:初试牛刀-显示图像-1

    OpenCV开发包提供了读取各种类型的图像文件.视频内容以及摄像机输入的功能.这些功能是OpenCV开发包所包含的HighGUI工具集的一部分. 先看两个小例子: #include"open ...

随机推荐

  1. python中的模块,以及包的导入的总结

    模块导入的方式: 模块的概念:一个.py文件就称为一个模块 导入模块中函数的方式: 方式一:import  模块名 使用时:模块名.函数名() 方式二 :from 模块名 import  函数名 使用 ...

  2. Linux日志分析ELK环境搭建

    场景:ELK作为一个日志收集和检索系统,感觉功能还是相当的强大的. ELK是啥, 其实是是三个组件的缩写, 分别是elasticsearch, logstash, kibana. ELK平台可以用于实 ...

  3. (转)java中的 | ^ & 分别是什么?

    |是按位或 ^是按位抑或 &是按位与 比如有两个数 int x = 5; int y = 11; System.out.println(x|y); System.out.println(x&a ...

  4. cin问题 分类: c++ 2014-08-02 21:13 38人阅读 评论(0) 收藏

    string s: while(cin>>s){ cout<<s<endl; } 当输入ss w    ww   w   w 按enter时 输出为 ss w ww w ...

  5. [补档][Tyvj 1518]CPU监控

    [Tyvj 1518]CPU监控 题目 Bob需要一个程序来监视CPU使用率.这是一个很繁琐的过程,为了让问题更加简单,Bob会慢慢列出今天会在用计算机时做什么事. Bob会干很多事,除了跑暴力程序看 ...

  6. spring容器注入一个接口的两个实现类

    spring容器中能拥有两个同种类型的bean吗?我有两个dao类同时实现一个接口,这两个接口注入时报了异常如下. org.springframework.beans.factory.NoSuchBe ...

  7. pickle和json模块

    json模块 json模块是实现序列化和反序列化的,主要用户不同程序之间的数据交换,首先来看一下: dumps()序列化 import json '''json模块是实现序列化和反序列话功能的''' ...

  8. C#使用Xamarin开发可移植移动应用(2.Xamarin.Forms布局,本篇很长,注意)附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 一点感想 很意外的,第一 ...

  9. 七月SSL行业新闻回顾

    大事件一:被泄露的私钥和基于假私钥进行的撤回 上个月,我们报告说Spotify和Cisco在应用程序中捆绑了有效证书的私钥.这些证书将根据基准要求被撤销,但应用程序不是泄露私钥的唯一来源.Koen R ...

  10. 安卓http源码查看器详解

    1.效果图如下,输入网址就可以看到该网址的源码