{"id":1126,"date":"2014-05-07T10:19:37","date_gmt":"2014-05-07T02:19:37","guid":{"rendered":"http:\/\/www.hsyyf.me\/?p=1126"},"modified":"2014-05-07T10:24:14","modified_gmt":"2014-05-07T02:24:14","slug":"pyqt4%e7%ae%80%e6%98%93%e4%bf%a1%e6%81%af%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f","status":"publish","type":"post","link":"https:\/\/www.hsyyf.me\/?p=1126","title":{"rendered":"PyQT4\u7b80\u6613\u4fe1\u606f\u7ba1\u7406\u7cfb\u7edf"},"content":{"rendered":"<p>\u7b2c\u4e00\u6b21\u7528PyQt\u505a\u5fae\u578b\u5f00\u53d1\uff08\uff1f\uff09\uff0c\u4ece\u4e2d\u5348\u4e00\u76f4\u5fd9\u5230\u6df1\u591c\uff0c\u591a\u591a\u5c11\u5c11\u6709\u4e9b\u6536\u83b7\uff0c\u5bf9\u4e8eQt\u7684\u57fa\u672c\u601d\u8def\u6709\u4e86\u4e00\u4e2a\u5927\u6982\u7684\u4e86\u89e3\u3002200\u591a\u884c\u4ee3\u7801\uff0c\u8bf4\u591a\u4e0d\u591a\uff0c\u8bf4\u5c11\u4e0d\u5c11\uff0c\u4e5f\u662f\u81ea\u5df1\u7b2c\u4e00\u4e2a\u8f83\u4e3a\u6709\u7528\u7684\u7a0b\u5e8f\u5427\u3002<\/p>\n<p><code lang=\"python\">#coding=utf-8<br \/>\nimport sys<br \/>\nfrom PyQt4 import QtGui, QtCore<br \/>\nimport csv<br \/>\nimport os<\/p>\n<p>class Window( QtGui.QWidget ):<br \/>\n    def __init__( self ):<br \/>\n        super( Window, self ).__init__()<br \/>\n        self.setWindowTitle( u\"\u5b66\u751f\u4fe1\u606f\u7ba1\u7406\u7cfb\u7edf\" )<br \/>\n        self.resize( 300, 400 )<br \/>\n        gridlayout = QtGui.QGridLayout()<br \/>\n        Input = QtGui.QPushButton( u\"\u63d2\u5165\u5b66\u751f\u4fe1\u606f\" )<br \/>\n        Del = QtGui.QPushButton( u\"\u5220\u9664\u5b66\u751f\u4fe1\u606f\" )<br \/>\n        Change = QtGui.QPushButton( u\"\u4fee\u6539\u5b66\u751f\u4fe1\u606f\" )<br \/>\n        Search = QtGui.QPushButton( u\"\u67e5\u770b\u5b66\u751f\u4fe1\u606f\" )<br \/>\n        Quit = QtGui.QPushButton( u\"\u9000\u51fa\" )<\/p>\n<p>        gridlayout.addWidget( Input, 1, 0, 1, 2 )<br \/>\n        gridlayout.addWidget( Del, 2, 0, 1, 2)<br \/>\n        gridlayout.addWidget( Change, 3, 0, 1, 2 )<br \/>\n        gridlayout.addWidget( Search, 4, 0, 1, 2 )<br \/>\n        gridlayout.addWidget( Quit, 5, 0, 1, 2 )<br \/>\n        self.setLayout( gridlayout )<\/p>\n<p>        self.connect(Input,QtCore.SIGNAL(\"clicked()\"),self.Input)<br \/>\n        self.connect(Del,QtCore.SIGNAL(\"clicked()\"),self.Del)<br \/>\n        self.connect(Quit,QtCore.SIGNAL(\"clicked()\"),self.Quit)<br \/>\n        self.connect(Search,QtCore.SIGNAL(\"clicked()\"),self.Search)<br \/>\n        self.connect(Change,QtCore.SIGNAL(\"clicked()\"),self.Change)<\/p>\n<p>    def Input(self):<br \/>\n        InputW=In()<br \/>\n        I=InputW.exec_()<br \/>\n    def Del(self):<br \/>\n        DelW=De()<br \/>\n        D=DelW.exec_()<br \/>\n    def Quit(self):<br \/>\n        self.close()<br \/>\n    def Search(self):<br \/>\n        SeaW=Se()<br \/>\n        S=SeaW.exec_()<br \/>\n    def Change(self):<br \/>\n        ChaW=Ch()<br \/>\n        C=ChaW.exec_()<\/p>\n<p>class Ch(QtGui.QDialog):<br \/>\n    def __init__(self):<br \/>\n        super(Ch,self).__init__()<br \/>\n        self.setWindowTitle(u\"\u4fee\u6539\u5b66\u751f\u4fe1\u606f\")<br \/>\n        self.resize(200,300)<br \/>\n        self.gridlayout=QtGui.QGridLayout()<\/p>\n<p>        self.Id=QtGui.QLabel(\"Id\")<br \/>\n        self.Name=QtGui.QLabel(\"Name:\")<br \/>\n        self.Sex=QtGui.QLabel(\"Sex:\")<br \/>\n        self.Tel=QtGui.QLabel(\"Tel:\")<\/p>\n<p>        self.QboxId=QtGui.QComboBox()<br \/>\n        with open('list.csv','r') as fp:<br \/>\n            reader=csv.reader(fp,dialect='excel')<br \/>\n            for i in reader:<br \/>\n                self.QboxId.addItem(i[0])<br \/>\n        self.textName=QtGui.QLineEdit()<br \/>\n        self.QboxSex=QtGui.QComboBox()<br \/>\n        self.QboxSex.addItem(u'\u7537')<br \/>\n        self.QboxSex.addItem(u'\u5973')<\/p>\n<p>        self.textTel=QtGui.QLineEdit()<\/p>\n<p>        self.reButton=QtGui.QPushButton(u\"\u66f4\u65b0\")<br \/>\n        self.okButton=QtGui.QPushButton(\"OK\")<br \/>\n        self.cancalButton=QtGui.QPushButton(\"Canel\")<\/p>\n<p>        self.gridlayout.addWidget( self.Id , 0, 0)<br \/>\n        self.gridlayout.addWidget( self.QboxId , 0, 1 )<br \/>\n        self.gridlayout.addWidget( self.reButton,0,3)<br \/>\n        self.gridlayout.addWidget( self.Name , 1, 0 )<br \/>\n        self.gridlayout.addWidget( self.textName , 1, 1 )<br \/>\n        self.gridlayout.addWidget( self.Sex , 2, 0 )<br \/>\n        self.gridlayout.addWidget( self.QboxSex , 2, 1 )<br \/>\n        self.gridlayout.addWidget( self.Tel , 3, 0 )<br \/>\n        self.gridlayout.addWidget( self.textTel , 3, 1 )<\/p>\n<p>        self.gridlayout.addWidget( self.okButton , 4, 3 )<br \/>\n        self.gridlayout.addWidget( self.cancalButton , 4, 2 )<\/p>\n<p>        self.connect( self.okButton, QtCore.SIGNAL( 'clicked()' ), self.OnOk )<br \/>\n        self.connect( self.reButton, QtCore.SIGNAL( 'clicked()' ), self.F5 )<br \/>\n        self.connect( self.cancalButton, QtCore.SIGNAL( 'clicked()' ), self.OnCancel )<\/p>\n<p>        self.setLayout( self.gridlayout )<\/p>\n<p>    def F5(self):<br \/>\n        with open('list.csv','r') as fp:<br \/>\n            reader=csv.reader(fp,dialect='excel')<br \/>\n            for i in reader:<br \/>\n                if self.QboxId.currentText()==i[0]:<br \/>\n                    self.textName.setText(i[1])<br \/>\n                    if i[2]==u\"\u5973\":<br \/>\n                        self.QboxSex.setCurrentIndex(1)<br \/>\n                    self.textTel.setText(i[3])<\/p>\n<p>    def OnCancel(self):<br \/>\n        self.done( 0 )<\/p>\n<p>    def OnOk(self):<br \/>\n        with open('list.csv','r') as fp:<br \/>\n            ff=open('list1.csv','w')<br \/>\n            reader=csv.reader(fp,dialect='excel')<br \/>\n            for i in reader:<br \/>\n                if self.QboxId.currentText() ==i[0]:<br \/>\n                    s=self.QboxId.currentText()+','+self.textName.text()+','+self.QboxSex.currentText()+','+self.textTel.text()+'\\n'<br \/>\n                    ff.write(s)<br \/>\n                else:<br \/>\n                    temp=i[0]+','+i[1]+','+i[2]+','+i[3]+'\\n'<br \/>\n                    ff.write(temp)<br \/>\n        ff.close()<br \/>\n        os.remove('list.csv')<br \/>\n        os.rename('list1.csv','list.csv')<br \/>\n        self.done( 1 )<\/p>\n<p>class Se(QtGui.QDialog):<br \/>\n    def __init__(self):<br \/>\n        super(Se,self).__init__()<br \/>\n        self.setWindowTitle(u\"\u67e5\u770b\u5b66\u751f\u4fe1\u606f\")<br \/>\n        count = len(open('list.csv','rU').readlines())<br \/>\n        self.MyTable = QtGui.QTableWidget(count,4)<br \/>\n        self.MyTable.setHorizontalHeaderLabels(['ID','Name','Sex','Tel'])<\/p>\n<p>        with open('list.csv','r') as fp:<br \/>\n            reader=csv.reader(fp,dialect='excel')<br \/>\n            k=0<br \/>\n            for i in reader:<br \/>\n                for j in range(4):<br \/>\n                    newItem = QtGui.QTableWidgetItem(i[j])<br \/>\n                    self.MyTable.setItem(k, j, newItem)<br \/>\n                k+=1<\/p>\n<p>        layout = QtGui.QHBoxLayout()<br \/>\n        layout.addWidget(self.MyTable)<br \/>\n        self.setLayout(layout)<\/p>\n<p>class De(QtGui.QDialog):<br \/>\n    def __init__(self):<br \/>\n        super(De,self).__init__()<br \/>\n        self.setWindowTitle(u\"\u5220\u9664\u5b66\u751f\u4fe1\u606f\")<br \/>\n        self.resize(100,200)<br \/>\n        self.gridlayout=QtGui.QGridLayout()<br \/>\n        self.Id=QtGui.QLabel(u\"\u5220\u9664\u7684Id:\")<br \/>\n        self.textId=QtGui.QLineEdit()<br \/>\n        self.okButton=QtGui.QPushButton(\"OK\")<br \/>\n        self.cancalButton=QtGui.QPushButton(\"Canel\")<br \/>\n        self.gridlayout.addWidget( self.Id , 0, 0)<br \/>\n        self.gridlayout.addWidget( self.textId , 0, 1 )<br \/>\n        self.gridlayout.addWidget( self.okButton , 1, 2 )<br \/>\n        self.gridlayout.addWidget( self.cancalButton , 1, 3 )<br \/>\n        self.connect( self.okButton, QtCore.SIGNAL( 'clicked()' ), self.OnOk )<br \/>\n        self.connect( self.cancalButton, QtCore.SIGNAL( 'clicked()' ), self.OnCancel )<br \/>\n        self.setLayout( self.gridlayout )<br \/>\n    def OnOk(self):<br \/>\n        k=0<br \/>\n        with open('list.csv','r') as fp:<br \/>\n            ff=open('list1.csv','w')<br \/>\n            reader=csv.reader(fp,dialect='excel')<br \/>\n            for i in reader:<br \/>\n                if self.textId.text() ==i[0]:<br \/>\n                    k=1<br \/>\n                else:<br \/>\n                    temp=i[0]+','+i[1]+','+i[2]+','+i[3]+'\\n'<br \/>\n                    ff.write(temp)<br \/>\n        ff.close()<\/p>\n<p>        if k==1:<br \/>\n            QtGui.QMessageBox.about(self,u'About',u'\u5220\u9664\u6210\u529f')<br \/>\n        else:<br \/>\n            QtGui.QMessageBox.about(self,u'About',u'\u5220\u9664\u5931\u8d25')<br \/>\n        fp.close()<br \/>\n        self.done( 1 )<br \/>\n        os.remove('list.csv')<br \/>\n        os.rename('list1.csv','list.csv')<br \/>\n    def OnCancel(self):<br \/>\n        self.done( 0 )<\/p>\n<p>class In(QtGui.QDialog):<br \/>\n    def __init__(self):<br \/>\n        super(In,self).__init__()<br \/>\n        self.setWindowTitle(u\"\u63d2\u5165\u5b66\u751f\u4fe1\u606f\")<br \/>\n        self.resize(200,300)<br \/>\n        self.gridlayout=QtGui.QGridLayout()<\/p>\n<p>        self.Id=QtGui.QLabel(\"Id\")<br \/>\n        self.Name=QtGui.QLabel(\"Name:\")<br \/>\n        self.Sex=QtGui.QLabel(\"Sex:\")<br \/>\n        self.Tel=QtGui.QLabel(\"Tel:\")<\/p>\n<p>        self.textId=QtGui.QLineEdit()<br \/>\n        self.textName=QtGui.QLineEdit()<br \/>\n        self.QboxSex=QtGui.QComboBox()<br \/>\n        self.QboxSex.addItem(u'\u7537')<br \/>\n        self.QboxSex.addItem(u'\u5973')<br \/>\n        self.textTel=QtGui.QLineEdit()<\/p>\n<p>        self.okButton=QtGui.QPushButton(\"OK\")<br \/>\n        self.cancalButton=QtGui.QPushButton(\"Canel\")<\/p>\n<p>        self.gridlayout.addWidget( self.Id , 0, 0)<br \/>\n        self.gridlayout.addWidget( self.textId , 0, 1 )<br \/>\n        self.gridlayout.addWidget( self.Name , 1, 0 )<br \/>\n        self.gridlayout.addWidget( self.textName , 1, 1 )<br \/>\n        self.gridlayout.addWidget( self.Sex , 2, 0 )<br \/>\n        self.gridlayout.addWidget( self.QboxSex , 2, 1 )<br \/>\n        self.gridlayout.addWidget( self.Tel , 3, 0 )<br \/>\n        self.gridlayout.addWidget( self.textTel , 3, 1 )<\/p>\n<p>        self.gridlayout.addWidget( self.okButton , 4, 3 )<br \/>\n        self.gridlayout.addWidget( self.cancalButton , 4, 2 )<\/p>\n<p>        self.connect( self.okButton, QtCore.SIGNAL( 'clicked()' ), self.OnOk )<br \/>\n        self.connect( self.cancalButton, QtCore.SIGNAL( 'clicked()' ), self.OnCancel )<\/p>\n<p>        self.setLayout( self.gridlayout )<\/p>\n<p>    def OnOk( self ):<br \/>\n        with open('list.csv',\"r\") as fp:<br \/>\n            k=1<br \/>\n            reader=csv.reader(fp,dialect='excel')<br \/>\n            for i in reader:<br \/>\n                if self.textId.text()==i[0]:<br \/>\n                    k=0<br \/>\n                    break<\/p>\n<p>        if k==1:<br \/>\n            fp=open(\"list.csv\",\"a\")<br \/>\n            s=self.textId.text()+','+self.textName.text()+','+self.QboxSex.currentText()+','+self.textTel.text()+'\\n'<br \/>\n            fp.write(s)<br \/>\n            fp.close()<br \/>\n            QtGui.QMessageBox.about(self,u'About',u'\u5199\u5165\u6210\u529f')<br \/>\n        else:<br \/>\n            QtGui.QMessageBox.about(self,u'About',u'Id\u91cd\u590d\uff0c\u5199\u5165\u5931\u8d25')<br \/>\n        self.done( 1 )<br \/>\n    def OnCancel( self ):<br \/>\n        self.done( 0 )<\/p>\n<p>app = QtGui.QApplication( sys.argv )<br \/>\ndemo = Window()<br \/>\ndemo.show()<br \/>\napp.exec_()<\/code><\/p>\n<p>\u5728win\u4e0b\u6253\u5305\uff0c\u7b80\u6613\u4f7f\u7528cxfreeze\uff0c\u4fdd\u5b58\u6210Student.py\u4e4b\u540e\uff0c\u5728cmd\u4e2d\u8fd0\u884c\uff1a<\/p>\n<p>cxfreeze Student.py<\/p>\n<p>\u4e4b\u540e\u4f1a\u751f\u6210dist\u6587\u4ef6\u5939\uff0cStudent.exe\u4e3b\u7a0b\u5e8f\u548c\u9700\u8981\u7684\u4f9d\u8d56\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7b2c\u4e00\u6b21\u7528PyQt\u505a\u5fae\u578b\u5f00\u53d1\uff08\uff1f\uff09\uff0c\u4ece\u4e2d\u5348\u4e00\u76f4\u5fd9\u5230\u6df1\u591c\uff0c\u591a\u591a\u5c11\u5c11\u6709\u4e9b\u6536\u83b7\uff0c\u5bf9\u4e8eQt\u7684\u57fa\u672c\u601d\u8def\u6709\u4e86\u4e00\u4e2a\u5927\u6982\u7684\u4e86\u89e3\u3002 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[16],"tags":[150,87,151],"class_list":["post-1126","post","type-post","status-publish","format-standard","hentry","category-16","tag-pyqt","tag-python","tag-151"],"_links":{"self":[{"href":"https:\/\/www.hsyyf.me\/index.php?rest_route=\/wp\/v2\/posts\/1126","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hsyyf.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hsyyf.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hsyyf.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hsyyf.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1126"}],"version-history":[{"count":0,"href":"https:\/\/www.hsyyf.me\/index.php?rest_route=\/wp\/v2\/posts\/1126\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.hsyyf.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1126"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hsyyf.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1126"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hsyyf.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}