zoukankan      html  css  js  c++  java
  • pyQt: eg3

    import sys
    import urllib2
    from PyQt4 import QtCore
    from PyQt4 import QtGui
    
    class Form(QtGui.QDialog):
        def __init__(self, parent=None):
            super(Form, self).__init__(parent)
    
            date = self.getdata()
            rates = sorted(self.rates.keys())
    
            dateLabel = QtGui.QLabel(date)
            self.fromComboBox = QtGui.QComboBox()
            self.fromComboBox.addItems(rates)
            self.fromSpinBox = QtGui.QDoubleSpinBox()
            self.fromSpinBox.setRange(0.01, 10000000.00)
            self.fromSpinBox.setValue(1.00)
            self.toComboBox = QtGui.QComboBox()
            self.toComboBox.addItems(rates)
            self.toLabel = QtGui.QLabel("1.00")
    
            grid = QtGui.QGridLayout()
            grid.addWidget(dateLabel, 0, 0)
            grid.addWidget(self.fromComboBox, 1, 0)
            grid.addWidget(self.fromSpinBox, 1, 1)
            grid.addWidget(self.toComboBox, 2, 0)
            grid.addWidget(self.toLabel, 2, 1)
            self.setLayout(grid)
    
            self.connect(self.fromComboBox,
                QtCore.SIGNAL("currentIndexChanged(int)"), self.updateUi)
            self.connect(self.toComboBox,
                QtCore.SIGNAL("currentIndexChanged(int)"), self.updateUi)
            self.connect(self.fromSpinBox,
                QtCore.SIGNAL("valueChanged(double)"), self.updateUi)
            self.setWindowTitle("Currency")
    
        def updateUi(self):
            to = unicode(self.toComboBox.currentText())
            from_ = unicode(self.fromComboBox.currentText())
            amount = ((self.rates[from_] / self.rates[to]) *
                      self.fromSpinBox.value())
            self.toLabel.setText("{0:.2f}".format(amount))
    
        def getdata(self): # Idea taken from the Python Cookbook
            self.rates = {}
            try:
                date = "Unknown"
                fh = urllib2.urlopen("http://www.bankofcanada.ca"
                                     "/en/markets/csv/exchange_eng.csv")
                for line in fh:
                    line = line.rstrip()
                    if not line or line.startswith(("#", "Closing ")):
                        continue
                    fields = line.split(",")
                    if line.startswith("Date "):
                        date = fields[-1]
                    else:
                        try:
                            value = float(fields[-1])
                            self.rates[unicode(fields[0])] = value
                        except ValueError:
                            pass
                return "Exchange Rates Date: " + date
            except Exception, e:
                return "Failed to download:
    {0}".format(e)    
    
    app = QtGui.QApplication(sys.argv)
    form = Form()
    form.show()
    app.exec_()
  • 相关阅读:
    python没有switch,可以用字典来替代
    Django1.8:403错误:CSRF verification failed. Request aborted.
    django重定向
    第九章 JSP标签——《跟我学Shiro》
    第八章 拦截器机制——《跟我学Shiro》
    第七章 与Web集成——《跟我学Shiro》
    第六章 Realm及相关对象——《跟我学Shiro》
    第五章 编码/加密——《跟我学Shiro》
    第四章 INI配置——《跟我学Shiro》
    第三章 授权——《跟我学Shiro》
  • 原文地址:https://www.cnblogs.com/lypy/p/6394363.html
Copyright © 2011-2022 走看看