记事本程序:

# 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. Spring和junit测试之配置文件路径

    本人在测试一个方法时需要加载XML配置文件,spring提供了相应的方法,就小小研究了下,在此记录下具体的过程,方便初学者和自己日后回顾. Spring容器最基本的接口就是BeanFactory. B ...

  2. Django 添加应用

    一个项目可以添加多个应用,可以使用以下两种方法来添加应用: [root@localhost web]$ python manage.py startapp blog [root@localhost w ...

  3. LVS+NGINX+TOMCAT_集群实施操作记录.docx

    LVS IP: Eth0:192.168.100.115 Eth1:192.168.100.215 Vi  /etc/init.d./lvs #!/bin/sh # # lvs      Start ...

  4. ANDROID – TOOLBAR STEP BY STEP(转)

    今年(2014) 的 Google I/O 發表令多數人為之一亮的 Material Design,而 Google 也從「Google I/O 2014」 開始,大家也陸陸續續地看到其更新的 And ...

  5. Sencha Cmd 5.0.1.231 是坑爹货

    Sencha Cmd 5.0.1.231相比之前的版本有了很大的变动,存在很多坑爹之处,个人建议不要升级到这个版本,如果已经升级了的就卸载了还原到以前的版本吧. 历史版本下载地址:http://cdn ...

  6. sencha touch 在线实战培训 第一期 第六节

    2014.1.11晚上8点开的课 本来计划8号晚上开课的,不过那天晚上小区电路出了问题,所以没有讲成.后面两天我又有点其他的事情,所以放到了11号来讲. 本期培训一共八节,前三堂免费,后面的课程需要付 ...

  7. Rails 添加新的运行环境

    Rails自带了development.test和production三个environments 我们可以添加Staging database.yml staging: adapter: mysql ...

  8. 【CF827E】Rusty String 调和级数+FFT

    [CF827E]Rusty String 题意:给你一个01串,其中部分字符是'?',?可以是0或1,求所有可能的d,满足存在一种可能得到的01串,在向右移动d格后与自己相同. $n\le 5\tim ...

  9. Spark2 Dataset之collect_set与collect_list

    collect_set去除重复元素:collect_list不去除重复元素select gender,       concat_ws(',', collect_set(children)),     ...

  10. Spark2 加载保存文件,数据文件转换成数据框dataframe

    hadoop fs -put /home/wangxiao/data/ml/Affairs.csv /datafile/wangxiao/ hadoop fs -ls -R /datafiledrwx ...