Pyqt 利用QDataStream对文件进行存取

 

 

 1 # -*- coding: utf-8 -*-

 2 from PyQt4.QtGui import *

 3 from PyQt4.QtCore import *

 4 import sys

 5 QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))

 6 

 7 class Settings(QDialog):

 8     def __init__(self,parent=None):

 9         super(Settings,self).__init__(parent)

10         self.setWindowTitle(self.tr("利用QDataStream对文件进行存取"))

11         

12         self.label = QLabel(self.tr("通道:"))

13         self.channelSpinBox = QSpinBox()

14         self.channelSpinBox.setRange(0,20)

15         self.timeLabel = QLabel(self.tr("第一次运行"))

16         

17         self.label_gong =QLabel(self.tr("功率:"))

18         self.powerComboBox = QComboBox()

19         self.powerComboBox.addItem(self.tr(""),"")

20         self.powerComboBox.addItem(self.tr(""),"")

21         self.powerComboBox.addItem(self.tr(""),"")

22         self.saveButton = QPushButton(self.tr("保存"))

23         

24         self.label_Frequency = QLabel(self.tr("频率:"))

25         self.FrequencyEdit = QLineEdit()

26         self.getButton = QPushButton(self.tr("读取"))

27         

28         layout = QGridLayout(self)

29         layout.addWidget(self.label,0,0)

30         layout.addWidget(self.channelSpinBox,0,1)

31         layout.addWidget(self.timeLabel,0,2)

32         

33         layout.addWidget(self.label_gong,1,0)

34         layout.addWidget(self.powerComboBox,1,1)

35         layout.addWidget(self.saveButton,1,2)

36         

37         layout.addWidget(self.label_Frequency,2,0)

38         layout.addWidget(self.FrequencyEdit,2,1)

39         layout.addWidget(self.getButton,2,2)

40         

41         self.resize(250,150)

42         

43         self.connect(self.saveButton,SIGNAL("clicked()"),self.slotSave)

44         self.connect(self.getButton,SIGNAL("clicked()"),self.slotGet) 

45         

46     def slotSave(self):

47         self.channel = self.channelSpinBox.value()

48         self.power = self.powerComboBox.currentIndex()

49         self.frequency = self.FrequencyEdit.text()

50         self.time = QDateTime()

51         file = QFile("parameters.dat")

52         file.open(QIODevice.WriteOnly)

53         out = QDataStream(file)

54         out.setVersion(QDataStream.Qt_4_0)

55         

56         out.writeUInt32(0xa1a2a3a4)

57         out.writeUInt32(self.channel)

58         out.writeUInt32(self.power)

59         out.writeString(self.frequency)

60         out << self.time.currentDateTime()

61             

62     def slotGet(self):

63         file = QFile("parameters.dat")

64         file.open(QIODevice.ReadOnly)

65         In = QDataStream(file)

66         In.setVersion(QDataStream.Qt_4_0)

67         magic = In.readUInt32()

68         if magic != 0xa1a2a3a4:

69             QMessageBox.information(self,"exception",self.tr("invalid file format"))

70             return

71         channel = In.readUInt32()

72         power = In.readUInt32()

73         frequency = In.readString() 

74         time = QDateTime()

75         In >> time

76         self.channelSpinBox.setValue(channel)

77         self.powerComboBox.setCurrentIndex(power)

78         self.FrequencyEdit.setText(frequency)

79         lastTime = time.date().toString(Qt.ISODate) + " " + time.time().toString()

80         self.timeLabel.setText(lastTime)

81         

82 app=QApplication(sys.argv)

83 dialog=Settings()

84 dialog.show()

85 app.exec_()

 Pyqt 利用QDataStream对文件进行存取

你可能感兴趣的:(DataStream)