PyQt4 初试牛刀二

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

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

def showNormal(self):
    super(LcdTime, self).showNormal()
    self.repaint()

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

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

# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui

class LcdTime(QtGui.QDialog):
    def __init__(self, parent=None):
        super(LcdTime, self).__init__(parent)

        self.hour = QtGui.QLCDNumber(8, self)
        self.hour.setGeometry(10, 10, 200, 80)
        self.hour.setSegmentStyle(QtGui.QLCDNumber.Flat)
        self.display()

        self.timer = QtCore.QTimer()
        self.connect(self.timer, QtCore.SIGNAL(‘timeout()‘), self.display)
        self.timer.start(1000)

        self.build_tray()
        self.resize(220, 100)
        self.central()

        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
        # 透明处理,移动需要拖动数字
        self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
        self.setMouseTracking(True)

    def mousePressEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton:
            self.dragPosition = event.globalPos() - self.frameGeometry().topLeft()
            event.accept()

    def mouseMoveEvent(self, event):
        if event.buttons() == QtCore.Qt.LeftButton:
            self.move(event.globalPos() - self.dragPosition)
            event.accept()

    def build_tray(self):
        trayIcon = QtGui.QSystemTrayIcon(self)
        trayIcon.setIcon(QtGui.QIcon(‘logo.png‘))
        trayIcon.show()
        trayIcon.setToolTip(‘时钟‘)
        trayIcon.activated.connect(self.trayClick)

        menu = QtGui.QMenu()
        normalAction = menu.addAction(‘正常显示‘)
        miniAction = menu.addAction(‘最小化托盘‘)
        exitAction = menu.addAction(‘退出‘)
        normalAction.triggered.connect(self.showNormal)
        exitAction.triggered.connect(self.exit)
        miniAction.triggered.connect(self.showMinimized)

        trayIcon.setContextMenu(menu)

    def exit(self):
        # 不设置Visible为False,退出后TrayIcon不会刷新
        self.setVisible(False)
        sys.exit(0)

    def trayClick(self, reason):
        if reason == QtGui.QSystemTrayIcon.DoubleClick:
            self.showNormal()
            self.repaint()

    def display(self):
        current = QtCore.QTime.currentTime()
        self.hour.display(current.toString(‘HH:mm:ss‘))

    def showNormal(self):
        super(LcdTime, self).showNormal()
        self.repaint()

    def central(self):
        screen = QtGui.QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move(screen.width() - size.width(), 0)

app = QtGui.QApplication(sys.argv)
lcd = LcdTime()
lcd.show()
sys.exit(app.exec_())
时间: 2024-08-06 16:04:11

PyQt4 初试牛刀二的相关文章

搜索引擎--范例:django之初试牛刀

这学期学了一门课<信息检索>,也就是传说中的搜索引擎 大作业自然而然的让我们自己做一个小型的搜索引擎.于是乎,我们本次的主题就诞生了 我也是边学边用,下面和大家一起分享我在这个过程中学到的东西,说的不对的请大家指正 这是我的成果搜索引擎--范例,大家可以点进去看看,点此下载所有文件盒源代码 按照流程,下面我给大家分享的依次是: 1:SAE创建新应用,SVN管理代码 2:新浪微博API获取最近的微博 3:中文分词算法的实现 4:谈谈django--mysql数据库的一些常用命令 搜索引擎--范例

Sublime Text 3 初试牛刀

每次我在其他视频网站上看学习视频的时候,看着老师用的编辑器高大上档次,而我一般用Notepad,和Dreamweaver去编辑网页,需要每一行代码,打进去,效率低.最近看到sublime编辑器,在网上搜了一下说是最受欢迎的,就毫不犹豫的下载下来,初试牛刀一下下,把我搜索的功能和与前端浏览器交互的插件简答介绍一下.前端实时可视化开发工具:LiveStyle 支持样式文件的修改,也可以在浏览器端编辑样式代码,会自动更新到你的样式表中. 浏览器端: 下载一个chrome浏览器,在 chrome网上应用

OpenCV 初试牛刀——显示图像

作者 : 卿笃军 示例:从磁盘加载并在屏幕上显示一幅图像. #include "highgui.h" int main() { IplImage *img = cvLoadImage("1.jpg"); //将图像加载至内存 cvNamedWindow("初试牛刀--显示图像",CV_WINDOW_AUTOSIZE);//创建一个窗口 cvShowImage("初试牛刀--显示图像",img); //显示图像 cvWaitKe

Flask+Vue 初试牛刀

------------------------------------------------------------------------------------------------------------------ 工具: pycharm python vscode vue ---------------------------------------------------------------------------------------------------------

初试牛刀:实时天气WebService

1.引入WebService:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 2.声明接口→界面获取值传入接口→接口返回值处理→输入 public string sWeatherHTML = ""; protected void Button1_Click(object sender, EventArgs e) { string txtCity=TextBox1.Text; cn.com.webxml.www.We

matlab初试牛刀__小练习

% T1 % 不妨设 h=2 D=1 clear,clc; h=2;D=1; x=-2*D:0.01:2*D; y=h*(x>D)+h/D.*x.*(abs(x)<=D)-h*(x<-D); % T_2 clear,clc; %用 cumsum函数 % A = (0:63); % B = cumsum(2.^A); % S = B(64) %用for循环 % clear,clc % s=0; % for i=0:63 % s = s+2.^i; % end % s %用sum函数 cle

u-boot,初试牛刀

手里拿到的uboot是uboot-2012,整个目录和之前的1.3.4没什么太大变化.但是系统启动初始化的流程,以及一些接口函数的定义变化了许多.以及初始化make的流程也变化,另外在nand的ecc校验算法增加了bch校验. 第一步,编译 linux下的编译,基本都是借用了Makefile和脚本以及链接文件协同合作,最后搞出来一个bin. 编译uboot也无外乎这样.只是稍微有些不同. 啥也不懂,啥也不知道怎么办? 那么make help 下吧,不识路,先问路. #make help Clea

openerp 初试牛刀 --项目开发重点 1

刚开始接触openerp的人肯定无从下手.实际上 你只要明白其中运行的大概原理 你便会使用它了. 首先我们看下 一般的目录结构: 对与英文不好的朋友 小编我也是免为其难的翻译下喽: addons/ |~idea/                   #这是模块的目录 |~demo/         #演示和单元测试的人口数据 |~il8n/              #字段翻译 |~report/ #报告定义 |~security /       #组织和访问权限的宣言 |~view/   #视

NLP初试牛刀,NLTK入门第一篇

之前下载过一个PDF,书名是<用python进行自然语言处理>,挺有意思的,加上NLP和机器学习目前大热,想趁着暑假涉猎一下.于是开始了入门NLP之旅. 安装环境:Ubuntu14.04桌面版,python版本:2.7 第一步:安装nltk,首先要安装pip工具:sudo apt-get install python-pip,安装完成后用pip安装nltk:sudo pip install python-nltk. 第二步:下载nltk所有的包,在终端中进入python的交互模式, >&