WEB开发网
开发学院软件开发Python Qt 和 PyQt 阅读

Qt 和 PyQt

 2008-09-30 13:08:04 来源:WEB开发网   
核心提示: 这个 Tk 版本使用了 log_timestamp() 方法作为按钮的 command= 参数,这个方法需要依次单独操作它要影响的所有窗口构件,Qt 和 PyQt(3),如果我们想更改按钮按下的效果(例如还要记录时间戳记),那么这个风格就很脆弱,当我们进一步研究设置应用程序所需的代码,以及

这个 Tk 版本使用了 log_timestamp() 方法作为按钮的 command= 参数。这个方法需要依次单独操作它要影响的所有窗口构件。如果我们想更改按钮按下的效果(例如还要记录时间戳记),那么这个风格就很脆弱。通过继承您可以实现这一点:

清单 2. StdOutLogger.py Tkinter 增强    class StdOutLogger(Logger):
  def log_timestamp(self):
    Logger.log_timestamp(self)
    print self.tslist[-1]

但是这个子类的作者需要相当精确地理解 Logger.log_timestamp() 已经做了什么;而且除非通过在子类中完全重写 .log_timestamp() 方法并且不调用父方法,否则没有办法 除去消息。

一个非常基本的 PyQt 应用程序总有一些样本代码,这些代码在哪里都相同,Tkinter 代码也是这样。但是,当我们进一步研究设置应用程序所需的代码,以及显示窗口构件的代码时,区别就显现出来了。

清单 3. logger-qt.py PyQt 应用程序  #!/usr/bin/env python
import sys, time
from qt import * # Generally advertised as safe
class Logger(QWidget):
  def __init__(self, *args):
    QWidget.__init__(self, *args)
    self.setCaption("Timestamp logging application")
    self.layout = QGridLayout(self, 3, 2, 5, 10)
    self.tsdisp = QTextEdit(self)
    self.tsdisp.setMinimumSize(250, 300)
    self.tsdisp.setTextFormat(Qt.PlainText)
    self.tscount = QLabel("", self)
    self.tscount.setFont(QFont("Sans", 24))
    self.log = QPushButton("&Log Timestamp", self)
    self.quit = QPushButton("&Quit", self)
    self.layout.addMultiCellWidget(self.tsdisp, 0, 2, 0, 0)
    self.layout.addWidget(self.tscount, 0, 1)
    self.layout.addWidget(self.log, 1, 1)
    self.layout.addWidget(self.quit, 2, 1)
    self.connect(self.log, SIGNAL("clicked()"),
           self.log_timestamp)
    self.connect(self.quit, SIGNAL("clicked()"),
           self.close)
  def log_timestamp(self):
    stamp = time.ctime()
    self.tsdisp.append(stamp)
    self.tscount.setText(str(self.tsdisp.lines()))
if __name__ == "__main__":
  app = QApplication(sys.argv)
  app.connect(app, SIGNAL('lastWindowClosed()'), app,
         SLOT('quit()'))
  logger = Logger()
  logger.show()
  app.setMainWidget(logger)
  app.exec_loop()

上一页  1 2 3 4 5 6  下一页

Tags:Qt PyQt

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接