python新手学pyqt4

这两天在学pyqt,就想动手做点小东西,参考pyqt上一个网格布局的例子做了个简单的计算器.

贴上代码:

#!/usr/bin/python

#gridlayout.py

# coding=utf8

import sys

from PyQt4 import QtGui,QtCore


class GridLayout(QtGui.QWidget):

    def __init__(self,parent=None):

        QtGui.QWidget.__init__(self)

        

        self.setWindowTitle('calculator')

        names=['Cls','Bck','','Close','7','8','9','/','4','5','6','*','1','2','3','-','0','.','=','+']

        grid=QtGui.QGridLayout()

        j=0

        pos=[(0,0),(0,1),(0,2),(0,3),

             (1,0),(1,1),(1,2),(1,3),

             (2,0),(2,1),(2,2),(2,3),

             (3,0),(3,1),(3,2),(3,3),

             (4,0),(4,1),(4,2),(4,3)]

        button={}

        for i in names:

            button[i]=QtGui.QPushButton(i)

            if j==2:

                grid.addWidget(QtGui.QLabel(' '),0,2)

            else:

                grid.addWidget(button[i],pos[j][0],pos[j][1])

            j=j+1

            

        vbox=QtGui.QVBoxLayout()

        self.lcd=QtGui.QLineEdit()

        vbox.addWidget(self.lcd)

        vbox.addLayout(grid)

        self.setLayout(vbox)

        self.setFocus()

        for i in names:

            button[i].clicked.connect(self.shownum)

            self.connect(button["Close"], QtCore.SIGNAL("clicked()"),QtGui.qApp,QtCore.SLOT('quit()'))

    

    def shownum(self):

            senderc=self.sender()    

            if senderc.text()=='Cls':   self.lcd.setText('')  

            elif senderc.text()=='Bck':   self.lcd.setText(self.lcd.text()[:-1])  

            elif senderc.text()=='=': 

                c=self.lcd.text()

                d=["+","-","*","/"]

                for i in d:

                    h=str(c).find(i)

                    print h

                    if h>0: break  

                a=str(c).split(i) 

                print a

                if i=="+":

                    b=int(a[0])+int(a[1])

                if i=="-":

                    b=int(a[0])-int(a[1])

                if i=="*":

                    b=int(a[0])*int(a[1])

                    print b

                if i=="/":

                    b=int(a[0])/int(a[1])

                print c

                self.lcd.setText(c+senderc.text()+str(b))       

            else:

                self.lcd.setText(self.lcd.text()+senderc.text())

   

app=QtGui.QApplication(sys.argv)

qb=GridLayout()

qb.show()

sys.exit(app.exec_())



你可能感兴趣的:(python,PyQt)