教你如何使用Python Tkinter库制作记事本


Posted in Python onJune 10, 2021

Tkinter库制作记事本

现在为了创建这个记事本,你的系统中应该已经安装了 Python 3 和 Tkinter。您可以根据系统要求下载合适的python 包。成功安装 python 后,您需要安装 Tkinter(一个 Python 的 GUI 包)。

使用此命令安装 Tkinter :

pip install python-tk

导入 Tkinter :

import tkinter
import os
from tkinter import *
from tkinter.messagebox import *
from tkinter.filedialog import *

注意: messagebox用于在称为记事本的白框中写入消息,filedialog用于在您从系统中的任何位置打开文件或将文件保存在特定位置或位置时出现的对话框。

添加菜单:

# Add controls(widget) 
  
self.__thisTextArea.grid(sticky = N + E + S + W) 
  
# To open new file 
self.__thisFileMenu.add_command(label = "New", 
                                command = self.__newFile) 
  
# To open a already existing file 
self.__thisFileMenu.add_command(label = "Open", 
                                command = self.__openFile) 
  
# To save current file 
self.__thisFileMenu.add_command(label = "Save", 
                                command = self.__saveFile) 
  
# To create a line in the dialog 
self.__thisFileMenu.add_separator() 
  
# To terminate 
self.__thisFileMenu.add_command(label = "Exit", 
                                command = self.__quitApplication) 
self.__thisMenuBar.add_cascade(label = "File", 
                               menu = self.__thisFileMenu) 
  
# To give a feature of cut 
self.__thisEditMenu.add_command(label = "Cut", 
                                command = self.__cut) 
  
# To give a feature of copy 
self.__thisEditMenu.add_command(label = "Copy", 
                                command = self.__copy) 
  
# To give a feature of paste 
self.__thisEditMenu.add_command(label = "Paste", 
                                command = self.__paste) 
  
# To give a feature of editing 
self.__thisMenuBar.add_cascade(label = "Edit", 
                               menu = self.__thisEditMenu) 
  
# To create a feature of description of the notepad 
self.__thisHelpMenu.add_command(label = "About Notepad", 
                                command = self.__showAbout) 
self.__thisMenuBar.add_cascade(label = "Help", 
                               menu = self.__thisHelpMenu) 
  
self.__root.config(menu = self.__thisMenuBar) 
  
self.__thisScrollBar.pack(side = RIGHT, fill = Y) 
  
# Scrollbar will adjust automatically 
# according to the content 
self.__thisScrollBar.config(command = self.__thisTextArea.yview) 
self.__thisTextArea.config(yscrollcommand = self.__thisScrollBar.set)

使用此代码,我们将在记事本的窗口中添加菜单,并向其中添加复制、粘贴、保存等内容。

添加功能:

def __quitApplication(self): 
    self.__root.destroy() 
    # exit() 
  
def __showAbout(self): 
    showinfo("Notepad", "Mrinal Verma") 
  
def __openFile(self): 
          
    self.__file = askopenfilename(defaultextension=".txt", 
                                  filetypes=[("All Files","*.*"), 
                                      ("Text Documents","*.txt")]) 
  
    if self.__file == "": 
  
        # no file to open 
        self.__file = None
    else: 
        # try to open the file 
        # set the window title 
        self.__root.title(os.path.basename(self.__file) + " - Notepad") 
        self.__thisTextArea.delete(1.0,END) 
  
        file = open(self.__file,"r") 
  
        self.__thisTextArea.insert(1.0,file.read()) 
  
        file.close() 
  
          
def __newFile(self): 
    self.__root.title("Untitled - Notepad") 
    self.__file = None
    self.__thisTextArea.delete(1.0,END) 
  
def __saveFile(self): 
  
    if self.__file == None: 
        #save as new file 
        self.__file = asksaveasfilename(initialfile='Untitled.txt', 
                                        defaultextension=".txt", 
                                        filetypes=[("All Files","*.*"), 
                                            ("Text Documents","*.txt")]) 
  
        if self.__file == "": 
            self.__file = None
        else: 
              
            # try to save the file 
            file = open(self.__file,"w") 
            file.write(self.__thisTextArea.get(1.0,END)) 
            file.close() 
            # change the window title 
            self.__root.title(os.path.basename(self.__file) + " - Notepad") 
                  
              
    else: 
        file = open(self.__file,"w") 
        file.write(self.__thisTextArea.get(1.0,END)) 
        file.close() 
  
def __cut(self): 
    self.__thisTextArea.event_generate("<<Cut>>") 
  
def __copy(self): 
    self.__thisTextArea.event_generate("<<Copy>>") 
  
def __paste(self): 
    self.__thisTextArea.event_generate("<<Paste>>")

在这里,我们添加了记事本中所需的所有功能,您也可以添加其他功能,例如字体大小、字体颜色、粗体、下划线等。

合并后的主要代码:

import tkinter
import os
from tkinter import *
from tkinter.messagebox import *
from tkinter.filedialog import *
 
 
class Notepad:
    __root = Tk()
 
    # default window width and height
    __thisWidth = 300
    __thisHeight = 300
    __thisTextArea = Text(__root)
    __thisMenuBar = Menu(__root)
    __thisFileMenu = Menu(__thisMenuBar, tearoff=0)
    __thisEditMenu = Menu(__thisMenuBar, tearoff=0)
    __thisHelpMenu = Menu(__thisMenuBar, tearoff=0)
 
    # To add scrollbar
    __thisScrollBar = Scrollbar(__thisTextArea)
    __file = None
 
    def __init__(self, **kwargs):
 
        # Set icon
        try:
            self.__root.wm_iconbitmap("Notepad.ico")
        except:
            pass
 
        # Set window size (the default is 300x300)
 
        try:
            self.__thisWidth = kwargs['width']
        except KeyError:
            pass
 
        try:
            self.__thisHeight = kwargs['height']
        except KeyError:
            pass
 
        # Set the window text
        self.__root.title("Untitled - Notepad")
 
        # Center the window
        screenWidth = self.__root.winfo_screenwidth()
        screenHeight = self.__root.winfo_screenheight()
 
        # For left-alling
        left = (screenWidth / 2) - (self.__thisWidth / 2)
 
        # For right-allign
        top = (screenHeight / 2) - (self.__thisHeight / 2)
 
        # For top and bottom
        self.__root.geometry('%dx%d+%d+%d' % (self.__thisWidth,
                                              self.__thisHeight,
                                              left, top))
 
        # To make the textarea auto resizable
        self.__root.grid_rowconfigure(0, weight=1)
        self.__root.grid_columnconfigure(0, weight=1)
 
        # Add controls (widget)
        self.__thisTextArea.grid(sticky=N + E + S + W)
 
        # To open new file
        self.__thisFileMenu.add_command(label="New",
                                        command=self.__newFile)
 
        # To open a already existing file
        self.__thisFileMenu.add_command(label="Open",
                                        command=self.__openFile)
 
        # To save current file
        self.__thisFileMenu.add_command(label="Save",
                                        command=self.__saveFile)
 
        # To create a line in the dialog
        self.__thisFileMenu.add_separator()
        self.__thisFileMenu.add_command(label="Exit",
                                        command=self.__quitApplication)
        self.__thisMenuBar.add_cascade(label="File",
                                       menu=self.__thisFileMenu)
 
        # To give a feature of cut
        self.__thisEditMenu.add_command(label="Cut",
                                        command=self.__cut)
 
        # to give a feature of copy
        self.__thisEditMenu.add_command(label="Copy",
                                        command=self.__copy)
 
        # To give a feature of paste
        self.__thisEditMenu.add_command(label="Paste",
                                        command=self.__paste)
 
        # To give a feature of editing
        self.__thisMenuBar.add_cascade(label="Edit",
                                       menu=self.__thisEditMenu)
 
        # To create a feature of description of the notepad
        self.__thisHelpMenu.add_command(label="About Notepad",
                                        command=self.__showAbout)
        self.__thisMenuBar.add_cascade(label="Help",
                                       menu=self.__thisHelpMenu)
 
        self.__root.config(menu=self.__thisMenuBar)
 
        self.__thisScrollBar.pack(side=RIGHT, fill=Y)
 
        # Scrollbar will adjust automatically according to the content
        self.__thisScrollBar.config(command=self.__thisTextArea.yview)
        self.__thisTextArea.config(yscrollcommand=self.__thisScrollBar.set)
 
    def __quitApplication(self):
        self.__root.destroy()
        # exit()
 
    def __showAbout(self):
        showinfo("Notepad", "Mrinal Verma")
 
    def __openFile(self):
 
        self.__file = askopenfilename(defaultextension=".txt",
                                      filetypes=[("All Files", "*.*"),
                                                 ("Text Documents", "*.txt")])
 
        if self.__file == "":
 
            # no file to open
            self.__file = None
        else:
 
            # Try to open the file
            # set the window title
            self.__root.title(os.path.basename(self.__file) + " - Notepad")
            self.__thisTextArea.delete(1.0, END)
 
            file = open(self.__file, "r")
 
            self.__thisTextArea.insert(1.0, file.read())
 
            file.close()
 
    def __newFile(self):
        self.__root.title("Untitled - Notepad")
        self.__file = None
        self.__thisTextArea.delete(1.0, END)
 
    def __saveFile(self):
 
        if self.__file == None:
            # Save as new file
            self.__file = asksaveasfilename(initialfile='Untitled.txt',
                                            defaultextension=".txt",
                                            filetypes=[("All Files", "*.*"),
                                                       ("Text Documents", "*.txt")])
 
            if self.__file == "":
                self.__file = None
            else:
 
                # Try to save the file
                file = open(self.__file, "w")
                file.write(self.__thisTextArea.get(1.0, END))
                file.close()
 
                # Change the window title
                self.__root.title(os.path.basename(self.__file) + " - Notepad")
 
 
        else:
            file = open(self.__file, "w")
            file.write(self.__thisTextArea.get(1.0, END))
            file.close()
 
    def __cut(self):
        self.__thisTextArea.event_generate("<<Cut>>")
 
    def __copy(self):
        self.__thisTextArea.event_generate("<<Copy>>")
 
    def __paste(self):
        self.__thisTextArea.event_generate("<<Paste>>")
 
    def run(self):
 
        # Run main application
        self.__root.mainloop()
 
    # Run main application
 
 
notepad = Notepad(width=600, height=400)
notepad.run()

要运行此代码,请使用扩展名.py保存它,然后打开 cmd(命令提示符)并移动到保存文件的位置,然后编写以下内容

python "filename".py

然后按回车,它就会运行。或者可以通过简单地双击您的.py扩展文件直接运行。

教你如何使用Python Tkinter库制作记事本

到此这篇关于教你如何使用Python Tkinter库制作记事本的文章就介绍到这了,更多相关Tkinter库制作记事本内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python selenium 父子、兄弟、相邻节点定位方式详解
Sep 15 Python
python 按照固定长度分割字符串的方法小结
Apr 30 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
python实现贪吃蛇游戏
Mar 21 Python
Python面向对象实现一个对象调用另一个对象操作示例
Apr 08 Python
Python中查看变量的类型内存地址所占字节的大小
Jun 26 Python
超简单的Python HTTP服务
Jul 22 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
python getpass实现密文实例详解
Sep 24 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
Python中的With语句的使用及原理
Jul 29 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 #Python
Pytorch可视化的几种实现方法
OpenCV-Python实现怀旧滤镜与连环画滤镜
OpenCV-Python实现轮廓的特征值
Jun 09 #Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 #Python
Python的这些库,你知道多少?
OpenCV-Python使用cv2实现傅里叶变换
You might like
PHP的FTP学习(三)
2006/10/09 PHP
PHP 网页过期时间的控制代码
2009/06/29 PHP
php中取得文件的后缀名?
2012/02/20 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
jquery tablesorter.js 支持中文表格排序改进
2009/12/09 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
Javascript类型系统之undefined和null浅析
2016/07/13 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
2018/08/09 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
Python2中的raw_input() 与 input()
2015/06/12 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
2018/02/07 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
python实现汽车管理系统
2018/11/30 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
2019/05/15 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
Python实现验证码识别
2020/06/15 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
Monki官网:斯堪的纳维亚的独立时尚品牌
2020/11/09 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
J2EE是技术还是平台还是框架
2016/08/14 面试题
《风筝》教学反思
2014/04/10 职场文书
会计电算化专业求职信
2014/06/10 职场文书
投标承诺函范文
2015/01/21 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
初中团支书竞选稿
2015/11/21 职场文书
python多线程方法详解
2022/01/18 Python