十一、GUI设计-记事本程序

"""记事本程序"""

from tkinter import *from tkinter.filedialog import *from tkinter.colorchooser import *class Application(Frame):    def __init__(self, master=None):        super().__init__(master)        # super()代表的是父类的定义,而不是父类对象        self.master = master        self.pack()        self.createWidget()    def createWidget(self):        #创建主菜单        menuBar = Menu(root)        #创建子菜单        menuFile = Menu(menuBar)        menuEdit = Menu(menuBar)        menuHelp = Menu(menuBar)        #将子菜单添加到主菜单上        menuBar.add_cascade(label="文件(F)", menu=menuFile)        menuBar.add_cascade(label="编辑(E)", menu=menuEdit)        menuBar.add_cascade(label="帮助(H)", menu=menuHelp)

        #添加菜单选项        menuFile.add_command(label="新建", accelerator="ctrl+n", command=self.newFile)        menuFile.add_command(label="打开", accelerator="ctrl+o", command=self.openFile)        menuFile.add_command(label="保存", accelerator="ctrl+s", command=self.saveFile)        menuFile.add_separator()  # 添加分割线        menuFile.add_command(label="退出", accelerator="ctrl+q", command=self.exit)

        #将主窗口添加到根窗口        root["menu"] = menuBar

        #编辑文本区        self.textpad = Text(root, width=600, height=30)        self.textpad.pack()

        #编辑上下菜单        self.rightMenu = Menu(root)        self.rightMenu.add_command(label="背景颜色", command=self.openAskColor)

        #绑定事件        root.bind("<Button-3>", self.createRightMenu)        root.bind("<Control-n>", lambda event: self.newFile())        root.bind("<Control-o>", lambda event: self.openFile())        root.bind("<Control-s>", lambda event: self.saveFile())        root.bind("<Control-q>", lambda event: self.exit())    def openFile(self):        self.textpad.delete(1.0, END)        with askopenfile(title="打开文本文件") as f:  #返回打开的文件对象            self.textpad.insert(INSERT, f.read())            self.filename=f.name    def newFile(self):        self.textpad.delete(1.0, END)        self.filename=asksaveasfilename(title="打开新建文件", initialfile="未命名.txt",                                        filetype=[("文本文档", "*.txt")],                                        defaultextension="*.txt") #返回的是保存的文件名        self.saveFile()

    def exit(self):        root.quit()

    def saveFile(self):        with open(self.filename, "w") as f:            f.write(self.textpad.get(1.0, END))

      #  with open(self.filename, "w") as f:       #     f.write(self.textpad.get(1.0, END))

    def openAskColor(self):        bgcolor = askcolor(color="red", title="背景颜色")        self.textpad.config(bg=bgcolor[1])

    def  createRightMenu(self, event):        self.rightMenu.post(event.x_root, event.y_root)

if __name__ == ‘__main__‘:    root = Tk()    root.geometry("600x250+200+300")    root.title("新建文本文档")    app = Application(master=root)    root.mainloop()

测试成功:

原文地址:https://www.cnblogs.com/dangjingwei/p/12284444.html

时间: 2024-10-16 11:20:25

十一、GUI设计-记事本程序的相关文章

设计一个基于GUI的扑克程序

在本课程教材扑克牌代码的基础上,设计一个基于GUI的扑克程序 a) 可以显示 52 张扑克牌,包括洗牌,发牌在内(2) b) 可以点击显示任何一张牌(1) c) 扑克翻面且突出显示(1) d) 扑克分组,例如 4 组,2 组.可以给每个组一定数量的牌(1) e) 按照一定的排序规则对分组牌进行排序(1) f) 发牌过程用动画显示(选做)(2)

结对人项目记事本程序

一.题目简介 所选项目名称:编写一个记事本程序 项目需求描述:现在网络上各种文档编辑器数不胜数,有EmEditor,UEStudio,GridinSoft Notepad,Notepad++,win32pad,SkimEdit,UniRed,xint.功能也是应有尽有,有能改变字体的,有能改变文字颜色的.但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大:有的功能太繁杂,使初级使用者一时难以掌握.仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了.本程

简易的记事本程序

利用GUI和IO流做的简易的记事本程序 import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; imp

GUI设计与制作入门

GUI设计与制作入门本人学习AutoIt还不到一年,可以说是新手,但在学习过程中得到众多AutoIt爱好者(konan.del888.COCO等)的大力帮助和有益启发.下文的编写纯属个人理解,深入学习还得看原文帮助文件.AutoIt发展至今(已到V3.10版),在GUI(图形界面)方面有不同程度的改进和提高.从目前函数语句增加情况看,设计一些比较复杂的应用程序应当说是不成问题的.我预测随着AutoIt版本进一步提高,GUI的设计功能将大大增强,到时GUI设计的编写器就如同VB6图形设计编写器一定

GUI设计9个原则(第三篇)

基本原则7: 传递信息,而不仅仅是数据 基本原则8: 设计应满足响应需求 基本原则9: 通过用户试用发现错误,然后修复它 7) 原则7: 传递信息,而不仅仅是数据 计算机承诺了一种信息来源.但是它们主要传递的是大量的数据--绝大部分都是无用数据.数据不是信息.人们需要从数据中提取信息. 软件应用程序通常把数据当作信息.它们把数据都扔给你,让你自己查明它们意味着什么.软件应当将用户的注意力集中到重要的数据上,并帮助他们从中提取信息. 7.1 认真设计显示,获取专业帮助 基木原则2提到: "首先考虑

GUI设计9个原则(第二篇)

基本原则4: 设计要符合常见情况 基本原别5: 不要分散用户对他们目标的注意力 基本原则6: 促进学习 4)原则4:设计要符合常见情况 在任何任务领域中,用户都有各种目标,从常用目标到很少发生的目标.应用程序应当设计为能够识别这些目标. 4.1 使得易于实现常用的结果 如果用户的目标是可预测的且常用的,用户就不应为了实现这个目标而必须做很多工作.如果目标是不常见的,则可以要求做更多工作.更正式的说法是: 为了得到一个想要的结果,用户必须要指定的量不应与结果的复杂度成比例.它应当与期望结果偏离常用

C#+Winform记事本程序

第17章 记事本 如何使用Visual C# 2010设计一个Windows应用程序--记事本,学习,可以进一步掌握MenuStrip(菜单).ToolStrip(工具栏).RichTextBox(高级文本框)和StatusStrip(状态栏控件)等控件的使用,以及如何使用CommonDialog(公共对话框)实现对文本的存取.格式设置等操作. 17.1 记事本简介 本章介绍的记事本,实现了Windows自带的记事本的部分功能外,并且还可以任意更改字体的字体类型.大小和颜色,并在状态栏中显示时间

设计一个程序能够将某一个目录下面的所有文件名打印出来---File类的使用

,设计一个程序能够将某一个目录下面的所有文件名打印出来 运用到的方法有:返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录:list()           测试此抽象路径名表示的文件是否是一个目录:isDirectory()           返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件:listFiles() package printfilename; import java.io.File; public class PrintFileNam

监听器和 利 用观察者设计模式设计一个程序

一.监听器概念 1.事件源:发生事件的对象. 2.监听器:是一个接口,监听事件源上要发生的动作 3.事件:事件对象一般是作为监听器方法的参数存在的,它封装了发生事件的对象 二.Servlet中提供的监听器(8个) 八个监听器分类: 2.1监听ServletContext.HttpSession.ServletRequest对象的创建和销毁的监听器. ServletContextListener:监听ServletContext对象的创建和销毁. HttpSessionListener:监听Htt