# -*- coding: utf-8 -*-
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8")) class Settings(QDialog):
def __init__(self,parent=None):
super(Settings,self).__init__(parent)
self.setWindowTitle(self.tr("利用QDataStream对文件进行存取")) self.label = QLabel(self.tr("通道:"))
self.channelSpinBox = QSpinBox()
self.channelSpinBox.setRange(0,20)
self.timeLabel = QLabel(self.tr("第一次运行")) self.label_gong =QLabel(self.tr("功率:"))
self.powerComboBox = QComboBox()
self.powerComboBox.addItem(self.tr("大"),"大")
self.powerComboBox.addItem(self.tr("中"),"中")
self.powerComboBox.addItem(self.tr("小"),"小")
self.saveButton = QPushButton(self.tr("保存")) self.label_Frequency = QLabel(self.tr("频率:"))
self.FrequencyEdit = QLineEdit()
self.getButton = QPushButton(self.tr("读取")) layout = QGridLayout(self)
layout.addWidget(self.label,0,0)
layout.addWidget(self.channelSpinBox,0,1)
layout.addWidget(self.timeLabel,0,2) layout.addWidget(self.label_gong,1,0)
layout.addWidget(self.powerComboBox,1,1)
layout.addWidget(self.saveButton,1,2) layout.addWidget(self.label_Frequency,2,0)
layout.addWidget(self.FrequencyEdit,2,1)
layout.addWidget(self.getButton,2,2) self.resize(250,150) self.connect(self.saveButton,SIGNAL("clicked()"),self.slotSave)
self.connect(self.getButton,SIGNAL("clicked()"),self.slotGet) def slotSave(self):
self.channel = self.channelSpinBox.value()
self.power = self.powerComboBox.currentIndex()
self.frequency = self.FrequencyEdit.text()
self.time = QDateTime()
file = QFile("parameters.dat")
file.open(QIODevice.WriteOnly)
out = QDataStream(file)
out.setVersion(QDataStream.Qt_4_0) out.writeUInt32(0xa1a2a3a4)
out.writeUInt32(self.channel)
out.writeUInt32(self.power)
out.writeString(self.frequency)
out << self.time.currentDateTime() def slotGet(self):
file = QFile("parameters.dat")
file.open(QIODevice.ReadOnly)
In = QDataStream(file)
In.setVersion(QDataStream.Qt_4_0)
magic = In.readUInt32()
if magic != 0xa1a2a3a4:
QMessageBox.information(self,"exception",self.tr("invalid file format"))
return
channel = In.readUInt32()
power = In.readUInt32()
frequency = In.readString()
time = QDateTime()
In >> time
self.channelSpinBox.setValue(channel)
self.powerComboBox.setCurrentIndex(power)
self.FrequencyEdit.setText(frequency)
lastTime = time.date().toString(Qt.ISODate) + " " + time.time().toString()
self.timeLabel.setText(lastTime) app=QApplication(sys.argv)
dialog=Settings()
dialog.show()
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. Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等

    本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...

  2. git-svn:通过git来管理svn代码

    简介 svn和git都是常用的版本管理软件,但是git无论在理念或是功能上都比svn更为先进.但是有的公司是以svn作为中央仓库,这时git与svn代码的同步就可以通过 git-svn这个软件进行,从 ...

  3. Apache shutdown unexpectedly启动错误解决方法

    这个问题比较常见, 通常是80.443端口被占用 cmd 通过运行apache/bin/httpd.exe 打印如下log: (OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一 ...

  4. bootstrap框架-----可见 隐藏

    可见框架-像素选择 -block-inline  :块内联元素 -inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递.旁边的内联对象会被呈递在同一行内,允许空格 可以设置宽度和 ...

  5. C# 接口基础

     接口只包含方法.属性.事件或索引器的签名. 实现接口的类或结构必须实现接口定义中指定的接口成员 接口中可以包含字段吗? 第一次被问到这个问题的时候被问愣住了,只能回答:印象当中没见过在接口中定义变量 ...

  6. [k]自定义样式下拉菜单

    自定义样式下拉菜单-1 <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> & ...

  7. Centos7 修改SSH 端口

    修改/etc/ssh/sshd_config vi /etc/ssh/sshd_config #Port 22 //这行去掉#号,防止配置不好以后不能远程登录,还得去机房修改,等修改以后的端口能使用以 ...

  8. Cuckoo for Hashing_双哈希表

    问题 B: Cuckoo for Hashing 时间限制: 1 Sec  内存限制: 64 MB提交: 24  解决: 12[提交][状态][讨论版] 题目描述 An integer hash ta ...

  9. VC++ LoadLibrary失败,错误126(找不到指定的模块)

    在VS中调用一个资源模块dll,LoadLibrary返回值为NULL,没有加载成功.GetLastError后原因为"找不到指定的模块"!代码如下: HINSTANCE hIns ...

  10. iOS 一个控件只能拥有一个父类

    不多说上图.多么惨痛的教训,一个子控件   只有最后的一个被addsubview才会生效.