记事本程序:

# coding:utf-8
import sys
from PyQt4.QtGui import QMainWindow
from PyQt4.QtGui import QApplication, QAction, QIcon, QFileDialog, QTextEdit
from PyQt4.QtCore import SIGNAL, SLOT
import codecs
import os.path
import sys
reload(sys)
sys.setdefaultencoding("utf-8") class MyWindow(QMainWindow): def __init__(self):
QMainWindow.__init__(self)
self.setWindowTitle("PyQt")
self.resize(300, 200)
self.create_menu_bar()
self.create_menu_action()
self.add_menu_action()
self.create_tool_bar()
self.add_tool_action()
self.maintext = QTextEdit()
self.setCentralWidget(self.maintext) def create_menu_bar(self):
menu = self.menuBar()
self.FileMenu = menu.addMenu(u'文件')
self.EditMenu = menu.addMenu(u'编辑')
self.SearchMenu = menu.addMenu(u'搜索') def create_menu_action(self):
self.OpenMenu = QAction(QIcon('images/open.png'),u'打开', self)
self.OpenMenu.setShortcut('Ctrl+O')
self.OpenMenu.setStatusTip(u'打开文件')
self.OpenMenu.connect(self.OpenMenu, SIGNAL('triggered()'), self.open_file) self.SaveMenu = QAction(QIcon('images/save.png'), u'保存', self)
self.SaveMenu.setShortcut('Ctrl+S')
self.SaveMenu.setStatusTip(u'保存文件')
self.connect(self.SaveMenu, SIGNAL('triggered()'), self.save_file) self.SaveAsMenu = QAction(QIcon('images/saveas.png'), u'另存为', self)
self.SaveAsMenu.setShortcut('Ctrl+Alt+S')
self.SaveAsMenu.setStatusTip(u'文件另存为')
self.connect(self.SaveAsMenu, SIGNAL('triggered()'), self.save_as_file) self.ExitMenu = QAction(QIcon('images/exit.png'), u'退出', self)
self.ExitMenu.setShortcut('Ctrl+Q')
self.ExitMenu.setStatusTip(u'退出程序')
self.connect(self.ExitMenu, SIGNAL('triggered()'), SLOT('close()')) def add_menu_action(self):
self.FileMenu.addAction(self.OpenMenu)
self.FileMenu.addAction(self.SaveMenu)
self.FileMenu.addAction(self.SaveAsMenu)
self.FileMenu.addAction(self.ExitMenu) def create_tool_bar(self):
self.Open_tool = self.addToolBar(u'打开')
self.Save_tool = self.addToolBar(u'保存')
self.SaveAs_tool = self.addToolBar(u'另存为')
self.Exit_tool = self.addToolBar(u'退出') def add_tool_action(self):
self.Open_tool.addAction(self.OpenMenu)
self.Save_tool.addAction(self.SaveMenu)
self.SaveAs_tool.addAction(self.SaveAsMenu)
self.Exit_tool.addAction(self.ExitMenu) def open_file(self):
self.filename = QFileDialog.getOpenFileName()
if os.path.isfile(self.filename):
with codecs.open(self.filename, 'r','utf-8') as f:
s = f.read()
self.maintext.setText(s) def save_file(self):
if 'filename' in dir(self):
with codecs.open(self.filename, 'w','utf-8') as f:
f.write(self.maintext.toPlainText())
else:
self.save_as_file() def save_as_file(self):
self.filename = QFileDialog.getSaveFileName()
with codecs.open(self.filename, 'w','utf-8') as f:
f.write(self.maintext.toPlainText()) app = QApplication(sys.argv)
mywindow = MyWindow()
mywindow.show()
app.exec_()

说明:

1. 下面代码可以保证读取文件中文内容不出现乱码

import codecs

with codecs.open(self.filename, 'w','utf-8') as f

2. 下面代码可以保证中文内容写入不出现乱码

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

3. 下面判断保证新文件保存时候采取另存为的方式

if 'filename' in dir(self):

python2.7+pyqt4实现记事本基本功能的更多相关文章

  1. PyQt4 模拟记事本基本功能(保存,打开文件)

    完成功能: 1. 默认[保存]按钮enable 2. 修改文本的内容后,[enable] 3. 解决字符乱码问题:utf-8 4. 提示:如果修改了文件没有保存的时候,又尝试打开新的文件,给出相关的提 ...

  2. python2.7+pyqt4 +eric4安装配置

    eric4安装与汉化一直没找到合适python的IDE工具,直到遇到了eric4这款开源软件.然而在使用过程中发现输出的中文字符竟然是乱码,修修改改配置总算正常显示了,何不干脆把软件界面也汉化下. 一 ...

  3. windows7系统下配置开发环境 python2.7+pyqt4+pycharm

    python2.7 链接:https://pan.baidu.com/s/1lPI9AF9GCaakLXsMZLd5mQ 提取码:5xt6 pip 链接:https://pan.baidu.com/s ...

  4. winform记事本(基本功能)

    本题主要考察各种控件的应用 using System; using System.Collections.Generic; using System.ComponentModel; using Sys ...

  5. python2.7+PyQt4+eric6 界面开发环境配置

    1.安装环境: python2.7 PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x64.exe eric6-18.12.zip 2.安装步骤: 1.安装python2.7的过程略 2 ...

  6. C#实现记事本查找功能

    private void button1_Click(object sender, EventArgs e) { if (!(String.IsNullOrEmpty(this.textBox1.Te ...

  7. JAVA 运用流编程实现简单的"记事本"功能

    一.概要 1.功能介绍 2.实现的思路及步骤代码 3.完整代码 二.功能 运用IO流和Swing实现简单的记事本功能(打开.保存.退出) 三.思路及实现步骤 1.在构造函数中画出操作界面 //创建jt ...

  8. 第十四周课程总结&记事本功能的简单实现。

    (1)课程总结: 这周简单学习了下JDBC的内容: JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据. 执行流程: (1)连接数据源,如:数据库. (2)为数据库传递查 ...

  9. py2.7+pyqt4开发端口检测工具

    使用工具:python2.7,pyqt4,pyinstaller,pywin32 先贴代码 import sys from PyQt4 import QtGui,QtCore import threa ...

随机推荐

  1. ubuntu 手动安装mysql

    申请了一台云主机,需要手动安装所有环境,今天将mysql安装过程记下. 安装mysqla. 下载不了gcc, 需要先运行apt-get updateb. cmake报错,每次要先删除cmakeCach ...

  2. LNMP 简介

    LNMP 代表的就是:Linux 操作系统下,Nginx + MySQL + PHP 这种网站服务器架构 工作流程:Nginx 直接处理静态请求,动态请求会转发给 php-fpm ( php 是作为一 ...

  3. 安装.NET Framework 3.5

    https://www.microsoft.com/zh-CN/download/details.aspx?id=22 https://docs.microsoft.com/zh-cn/dotnet/ ...

  4. SQL-游标-查询数据库中的所有表的数据个数

    --sql语句-游标等使用 ) ) declare @i INT ) declare @cstucount INT --上方设置变量 --初始值 declare mCursor cursor --设置 ...

  5. OpenCV——轮廓特征描述

    检测出特定轮廓,可进一步对其特征进行描述,从而识别物体. 1. 如下函数,可以将轮廓以多种形式包围起来. // 轮廓表示为一个矩形 Rect r = boundingRect(Mat(contours ...

  6. 合格PHP工程师的知识结构

    摘自http://www.cnblogs.com/ftx5410/p/7204672.html 一下子就想了这么多,后续想到了再补,请大家多多指教.其实编程使用什么语言不重要,最重要的是思想,编程的思 ...

  7. 【llinux】yum命令出现Loaded plugins: fastestmirror Determining fastest mirrors

    在进行yum 安装的时候.报错了. Loaded plugins: fastestmirror Determining fastest mirrors fastestmirror是yum的一个加速插件 ...

  8. WEB-DICT词库计划

    欢迎大家支持晓阳童鞋的词库计划,建立一个庞大的中文词库 地址如下:http://webdict.info/ 什么是WEB-DICT词库计划? WEB-DICT词表计划目标是通过机器学习算法以及人工标注 ...

  9. vue经验 - 那些自己给自己挖的深坑

    深坑场景:vue-异步请求数据,数据还没回来,页面却如饥似渴的准备好了的尴尬场景:问题原因和解决如下: 1.先说vuex中的store,一开始我为了偷懒是这么设置的,如下图: 然后我到了组件中直接这么 ...

  10. javah生成jni头文件时报错 Error: cannot access android.support...

    javah生成jni头文件时报错: Error: cannot access android.support.v7.app.AppCompatActivity class file for andro ...