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对文件进行存取的更多相关文章

  1. 【Python】[技术博客] 如何对使用PYQT编写的GUI文件进行单元测试

    如何对使用PYQT编写的GUI文件进行单元测试 想要对PYQT编写的GUI文件进行单元测试,我们主要用到QTest QTest里面包含了一些对窗体的各种控件进行模拟操作的函数,通过QTest对窗体进行 ...

  2. 利用其它带文件防护功能的软件防止*.asp;*.jpg写入文件。

    此木马是一个.NET程序制作,如果你的服务器支持.NET那就要注意了,,进入木马有个功能叫:IIS Spy,点击以后可以看到所有站点所在的物理路径.以前有很多人提出过,但一直没有人给解决的答案.. 防 ...

  3. Android利用Http下载文件

    Android利用Http下载文件 一.场景 下载存文本文件和下载如mp3等大容量的文件 界面 二.代码编写 1.AndroidMainfest.xml中配置 主要是解决网络权限和写SDCard的权限 ...

  4. 利用putty实现文件在linux上传和下载

    利用putty实现文件上传和下载:1.打开windows命令提示符窗口d:(putty在d盘下)cd putty(pscp.exe所在目录)2:上传(主要利用pscp程序)pscp d:/jdk-8u ...

  5. Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题 swfUpload多文件上传

    Java 利用SWFUpload多文件上传 session 为空失效,不能验证的问题(转) 我们都知道普通的文件上传是通过表单进行文件上传的,还不能达到异步上传的目的.通过使用某些技术手段,比如jqu ...

  6. Java利用内存映射文件实现按行读取文件

    我们知道内存映射文件读取是各种读取方式中速度最快的,但是内存映射文件读取的API里没有提供按行读取的方法,需要自己实现.下面就是我利用内存映射文件实现按行读取文件的方法,如有错误之处请指出,或者有更好 ...

  7. 【转载】C#递归删除文件夹目录及文件

    在C#文件操作过程中,有时候需要删除相应目录,如果文件夹中含有其他文件夹或者文件,也需要一并进行删除,此时可能就需要使用递归来删除文件夹目录以及文件,递归过程中,如果遍历的对象是文件夹,则删除文件夹, ...

  8. [转]利用ssh传输文件

    利用ssh传输文件 http://www.cnblogs.com/jiangyao/archive/2011/01/26/1945570.html 在linux下一般用scp这个命令来通过ssh传输文 ...

  9. .net上传文件,利用npoi读取文件信息到datatable里

    整理代码,.net上传文件,利用npoi读取文件到datatable里,使用了FileUpload控件,代码如下: protected void Button1_Click(object sender ...

随机推荐

  1. [转]ubuntu 14.04 如何开启和关闭触控板

    转自:http://lxn348567248.blog.163.com/blog/static/1201759252014649443513/ 禁用触摸板的命令:  sudo rmmod psmous ...

  2. ITIL与ITSM的联系与区别

    1.ITIL(IT Infrastructure Library)是CCTA(英国国家计算机和电信局)于20世纪80年代末开发的一套IT服务管理标准库,它把英国各个行业在IT管理方面的最佳实践归纳起来 ...

  3. Oracle: SQL组合不同字段作为一个查询条件

    前端程序传过来的值是有三个字段组合之后的结果,后端程序处理,并且将查询的数据反馈给前端. PS:不能直接使用字段RPT_NO的,因为在这条记录中RPT_NO恰好等于其他三个字段的组合值. 正确的做法是 ...

  4. Silverlight 中datagrid控件-- 通过设置数据虚拟化加速显示

    定义依赖属性作为datagrid的数据源 protected static readonly DependencyProperty ViewLogsProperty = DependencyPrope ...

  5. C++构造函数初始化顺序

    [本文链接] http://www.cnblogs.com/hellogiser/p/constructor-order.html 1.构造函数.析构函数与拷贝构造函数介绍 构造函数 构造函数不能有返 ...

  6. Semaphore(信号量)

    Semaphore msdn介绍: 限制可同时访问某一资源或资源池的线程数. 命名空间: System.Threading 程序集: System(在 System.dll 中) 通俗理解: 1:宾馆 ...

  7. MySQL排序原理与MySQL5.6案例分析【转】

    本文来自:http://www.cnblogs.com/cchust/p/5304594.html,其中对于自己觉得是重点的加了标记,方便自己查阅.更多详细的说明可以看沃趣科技的文章说明. 前言    ...

  8. Effective C++ -----条款32:确定你的public继承塑模出is-a关系

    “public继承”意味is-a.适用于base classes身上的每一件事情一定也适用于derived classes身上,因为每一个derive class对象也都是一个base class对象 ...

  9. nyoj130 相同的雪花

    相同的雪花 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 You may have heard that no two snowflakes are alike. ...

  10. linux 增加用户 useradd 用法小结及配置文件说明

    转自CSDN,http://blog.csdn.net/warden2010/article/details/5132290,谢谢作者 在Linux 系统中,所有的用户和组像一个国家.如果国家要繁荣昌 ...