PyQt4实现一个简单的notepad

来源:互联网 发布:手机ping命令测试网络 编辑:程序博客网 时间:2024/06/14 04:48

学习《PyQt4编程简介》,实现的一个notepad。

1. 用designer放了两个按钮之后,其他按钮都是直接修改代码生成的,比重新designer,再pyuic,简单点儿

2. 实现了打开,保存,清空,关闭 4个按钮

3.  from os.path import isfile  判断文件名是否存在,需要导入这个,if isfile(self.filename)

4.  import codecs  涉及中文编码问题,需要导入这个,fileContent = codecs.open(self.filename,'r','utf-8').read()

5. 不太明白self.filename 和 不带self .直接filename,有什么区别???

6. 文件选择对话框,用QFileDialog: fileDialog = QtGui.QFileDialog(self)

7. 将选择文件的文件名传给 filename:   self.filename = fileDialog.getOpenFileName()


===========================================================

#!/usr/bin/python

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


'''
Created on 2012-2-23
'''
import sys
from PyQt4 import QtGui, QtCore
from ui_notepad import Ui_Notepad


class myNotePad(QtGui.QMainWindow):
    '''
    classdocs
    '''

    def __init__(self,parent=None):
        '''
        Constructor
        '''
        QtGui.QWidget.__init__(self,parent)
        self.ui = Ui_Notepad()
        self.ui.setupUi(self)
        
        # here we connect signals with our slots,我们把 “打开”信号链接到了自己实现的函数file_dialog(),也就是slot
        # file_dialog() 是信号对应的函数
        QtCore.QObject.connect(self.ui.button_open,QtCore.SIGNAL("clicked()"), self.file_dialog)
        QtCore.QObject.connect(self.ui.button_save,QtCore.SIGNAL(("clicked()")),self.file_save)


    def file_dialog(self):
        # 设置文本内容 
        # self.ui.editor_window.setText('hahah,you are so cute')
        
        # 点击 打开->出现文件选择对话框->选择一个文件->显示在editor中
        # fileDialog.getOpenFileName()用于返回我们选择文件的名字,open这个文件并read
        fileDialog = QtGui.QFileDialog(self)
        self.filename = fileDialog.getOpenFileName()
        # print self.filename
        from os.path import isfile
        # 如果文件名存在,则open并read
        if isfile(self.filename):
            import codecs
            fileContent = codecs.open(self.filename,'r','utf-8').read()
            self.ui.editor_window.setPlainText(fileContent)
    
    def file_save(self):
        # 保存修改后的文件
        from os.path import isfile
        if isfile(self.filename):
            import codecs
            sfile = codecs.open(self.filename, 'w', 'utf-8')
            sfile.write(unicode(self.ui.editor_window.toPlainText()))
            sfile.close()
             

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    myapp = myNotePad()
    myapp.show()
    sys.exit(app.exec_())
原创粉丝点击