晴天霹了个小雳啊!

关于这个:盼望早日kde的dolphin修好

今天骤然收到个噩耗:

又得等4.5.1+了吗……我对KDE其实就这一个不满,您别不给力啊!

https://bugs.kde.org/show_bug.cgi?id=232054

Sebastian Trueg <trueg@k3b.org> changed:

What    |Removed                     |Added
—————————————————————————-
Status|NEW                         |ASSIGNED
CC|                            |trueg@k3b.org

— Comment #34 from Sebastian Trueg <trueg k3b org>  2010-07-29 12:07:05 —
@Panagiotis: this has nothing to do with Nepomuk or its strigi integration.
This is Dolphin’s own strigi integration which you cannot disable. But we now
have a way to fix it and if all goes well that fix will be in 4.5.1.

Posted in KDE | Tagged | 6 Comments

Blog真正恢复和一个Android小技巧

之前VPS不知道为什么又变成用Apache了,重新换回了nginx,现在链接应该也正常了。重新打压了性能,fastcgi启动的进程减少1,php.ini中降低memory limit。我就奇怪了一个破blog能占用多少cpu啊。

另外想说的就是Android在我这里今天起到了重要的作用,这里学校是通过网关上网的,需要登录帐号,帐号分为国际和国内,但是实验室的ip是免登录的国内,也就是没办法用我的国际网关帐号(如果用无线网就可以),我懒得开我的笔记本共享网络了,怎么办呢?灵机一动用android的wifi登录网关,然后通过ssh tunnel上Android(我的Android有ssh服务……),好了,这下有个可以上国际网的socks代理了。这才登录上这台VPS配置了半天搞定了问题

Posted in 日志 | Tagged , , | 3 Comments

盼望早日KDE的Dolphin修好

https://bugs.kde.org/show_bug.cgi?id=232054

就是这玩意啦,多半Dolphin卡死就是这个bug(恐怕吧),喂,不把这玩意修好可别发布KDE 4.5啊!

Posted in KDE | 4 Comments

复活了!

好吧,VPS抱怨我占用资源过多给挂起了= =b(泪目),奏是这么回事

Posted in 日志 | Leave a comment

简单易懂的PyQt Demo

PyQtDemo.tar.gz

其实是专门为右京样一兄所作,搞了一个非常简单的窗口。闲话少说,我们来看看这个东西。

内容物很简单。

.
├── build.py
├── demowindow.py
├── main.pyw
└── ui
└── demowindow.ui

首先需要运行./build.py根据ui文件生成一个py文件,然后./main.pyw就可以运行了。内容也超少,首先是main.pyw的内容:

#!/usr/bin/env python

import sys
from PyQt4.QtGui import QApplication
from demowindow import DemoWindow
from PyQt4.QtCore import Qt, SIGNAL

if __name__ == "__main__":
    app = QApplication(sys.argv);
    app.connect( app, SIGNAL( "lastWindowClosed()" ), app.quit);
    demowindow = DemoWindow()
    demowindow.show()
    sys.exit(app.exec_())

原理很简单,实例化一个QApplication对象(Qt程序都需要),设置一个signal,表示所有窗口退出后程序退出。

然后实例化了一个我们用Qt Designer创建的窗口,并显示。

然后是demowindow.py的内容:

from PyQt4.QtCore import Qt, SIGNAL
from PyQt4.QtGui import *

from ui_demowindow import Ui_DemoWindow

class DemoWindow(QWidget, Ui_DemoWindow):
    def __init__(self, parent = None):
        QWidget.__init__(self,parent)
        self.setupUi(self)
        self.connect(self.testButton, SIGNAL("clicked()"), self.test)
        self.connect(self.exitButton, SIGNAL("clicked()"), self.exit)

    def test(self):
        self.helloLabel.setText("abc");

    def exit(self):
        self.close()

内容依旧简单明了,主要就是处理按钮事件,按下Test就会把显示的文字改成abc,按下Exit就是退出。初始化函数的惯例就是需要调用setupUi,这个函数相当于处理了界面的构建。那么原理是什么样子的呢?首先我们创建了一个ui文件(利用qt designer,涂涂画画什么的,最简单了,layout得自己玩玩才搞得明白)。然后利用pyuic4这个程序将ui文件转换为python代码pyuic4 -o ui_demowindow.py ui/demowindow.ui,这里这个python文件中会定义一个类Ui_classname,这个class name就是ui文件中顶级widget的名字(区分大小写)。然后一般都是利用定义一个新类继承Ui_类,和对应的Widget类型。然后在初始化的时候调用setupUi(self)初始化界面。

然后解释一下Qt的消息处理机制(个人理解),Qt的消息分为SLOT和SIGNAL,关联SIGNAL和SLOT称为connect。SIGNAL相当于一个事件,例如

self.connect(self.testButton, SIGNAL("clicked()"), self.test)

这是什么意思呢?就是在self.testButton这个按钮产生clicked的SIGNAL时,调用test这个函数。connect就是将这个信号和SLOT(test)关联起来。

P.S. 吐槽:右京样一兄你的blog没有trackback吗?还是你的主题不支持trackback链接……我本来想trackback一下你的原始文呢。

P.S.的P.S. 我猜出trackback链接了……

参考资料:

http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/pyqt4ref.html

http://diotavelli.net/PyQtWiki/Creating_GUI_Applications_with_PyQt_and_Qt_Designer

Posted in Qt | Tagged | 9 Comments