• 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_()
  • 相关阅读:
    android:descendantFocusability用法简析
    离开自己的安乐窝
    Android Material Design 中文版
    android Material
    jquery 效果网址分享
    Android判断TextView是否超出加省略号
    如何摆脱工具类
    android 框架
    gridview 横向滚动 一行显示
    自定义 spinner
  • 原文地址:https://www.cnblogs.com/lypy/p/6394363.html
Copyright © 2020-2023  润新知