zoukankan      html  css  js  c++  java
  • PyQt5编程入门

    1  25行的弹出式闹钟

    import sys
    import time
    
    from PyQt5 import QtCore
    from PyQt5.QtWidgets import QLabel
    from PyQt5.QtWidgets import QApplication
    
    #先创建一个app实例
    app = QApplication(sys.argv)
    
    # handle the argv
    try:
        due = QtCore.QTime.currentTime()
        message = 'Alert!'
        if len(sys.argv) < 2:
            raise ValueError
        hours, mins = sys.argv[1].split(':')
        due = QtCore.QTime(int(hours), int(mins))
        if not due.isValid():
            raise ValueError
        if len(sys.argv) > 2:
            message = ' '.join(sys.argv[2:])
            
    except ValueError:
        message = 'Usage: alarm_clock.py HH:MM [optional message]'
    
    while QtCore.QTime.currentTime() < due:
        print(QtCore.QTime.currentTime())
        time.sleep(1)
    
    #设定标签内容,然后show这个标签
    #调用一个单次触发器,6w毫秒(1min)后,触发app.quit。
    label = QLabel('<font color=red size=72><b>' + message + '</b></font>')
    label.show()
    QtCore.QTimer.singleShot(60000, app.quit)
    
    #执行app实例
    app.exec_()
    

      

     2 30行的表达式求值程序

    import sys
    from math import *
    from PyQt5 import QtCore
    from PyQt5.QtWidgets import QApplication,QDialog,QLineEdit,QTextBrowser,QVBoxLayout
    
    #Form这个class是一个界面
    class Form(QDialog):
        #使用几种方法来做用户响应
        def __init__(self,parent=None):
            super(Form, self).__init__(parent)
            self.browser = QTextBrowser()
            self.lineedit = QLineEdit('input the expression and press Enter')
            self.lineedit.selectAll()
    
            #设定布局
            layout = QVBoxLayout()
            layout.addWidget(self.browser)
            layout.addWidget(self.lineedit)
            self.setLayout(layout)
            self.lineedit.setFocus()
            
            #设定触发机制
            self.lineedit.returnPressed.connect(self.updateUi)
            
            #设定title
            self.setWindowTitle('Calculate')
    
        #具体的数学方法
        def updateUi(self):
            try:
                text = self.lineedit.text()
                result = eval(text)
                self.browser.append('%s = %s' %(text,result))
            except:
                self.browser.append('<font color=red>%s is invalid!</font>' %text)
    
    app = QApplication(sys.argv)
    form = Form()
    form.show()
    app.exec_()
    

      

    3 70行货币转换程序

    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    
    class Form(QDialog):
        def __init__(self,parent=None):
            super(Form, self).__init__(parent)
            self.rates = {'CNY': 1, 'HK': 0.86, 'USD': 6.79}
    
            # 创建多选框,并添加多选数据
            self.fromComboBox = QComboBox()
            self.fromComboBox.addItems(self.rates)
    
            #创建浮点型数据微调框,并设定精度范围和初始值
            self.fromSpinBox = QDoubleSpinBox()
            self.fromSpinBox.setRange(0.01,100000.00)
            self.fromSpinBox.setValue(1.00)
    
            #第二个多选框,用于计算对应货币
            self.toComboBox = QComboBox()
            self.toComboBox.addItems(self.rates)
    
            #创建一个标签,并给定显示内容
            self.toLable = QLabel('1.00')
    
            #将多个界面构成一个布局
            grid = QGridLayout()
            grid.addWidget(self.fromComboBox, 1, 0)
            grid.addWidget(self.fromSpinBox,1,1)
            grid.addWidget(self.toComboBox,2,0)
            grid.addWidget(self.toLable,2,1)
            self.setLayout(grid)
    
            #只要任意一个变化,就触发函数,用于实时计算结果
            #多选框是index变化,浮点数字框是value变化
            self.fromComboBox.currentIndexChanged.connect(self.updateUi)
            self.toComboBox.currentIndexChanged.connect(self.updateUi)
            self.fromSpinBox.valueChanged.connect(self.updateUi)
    
            #设置标题
            self.setWindowTitle('Currency')
    
        def updateUi(self):
             #QComboBox有index和text,对应字典中的k-v。当索引变化,就触发text的计算,然后写入toLable(取两位小数点)。
             to = self.toComboBox.currentText()
             from_ = self.fromComboBox.currentText()
             amount = self.rates[from_] / self.rates[to] * self.fromSpinBox.value()
             self.toLable.setText('%.2f' %amount)
    
    app = QApplication(sys.argv)
    form = Form()
    form.show()
    app.exec_()
    

      

  • 相关阅读:
    获取农历日期
    图片上传代码(C#)
    ASP.net使用技术总结(1)GridView控件的单击处理
    JavaScript使用小技巧:IE8的关闭处理
    FrameSet左右收缩编码
    哈哈,开心!今天注册开通了 弟弟Kernel 的网志
    设计模式简介
    Delphi字符串、PChar与字符数组之间的转换
    C++中数组参数详解
    1、简单工厂模式
  • 原文地址:https://www.cnblogs.com/jabbok/p/9330381.html
Copyright © 2011-2022 走看看