"""记事本程序"""

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() 测试成功:

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

  1. 十二、GUI设计-画图程序

    """小小画笔""" from tkinter import *from tkinter.filedialog import *from t ...

  2. java.awt包提供了基本的java程序的GUI设计工具

    java.awt包提供了基本的java程序的GUI设计工具.主要包括下述三个概念: 组件--Component 容器--Container 布局管理器--LayoutManager package T ...

  3. qt5.5实现 记事本程序

    最近由于要做Qt相关的毕业设计课题,以前对Qt完全不了解,对于客户端图形界面程序,也只对Windows下的MFC熟悉, 所以,由于Qt的跨平台特性和相对比较纯的C++的特点,就准备学习一下吧.这两天逛 ...

  4. 【windows开发实现记事本程序——逻辑篇1】

    1. 主要内容 从本节开始介绍windows开发实现记事本程序的逻辑实现部分.本节的主要内容有以下3点: 1. 主窗口定义  -- 主要介绍记事本主界面窗口对应的窗口类及实现方案 2. RichEdi ...

  5. 【windows开发实现记事本程序——界面篇】

    前言 从毕业开始学习windows UI编程,工作中总是和一些API打交道,但是从没有做过一个完整的界面程序.因此打算自己利用空余时间做一个小的项目来总结自己所学的东西.在网上看到许多人建议自己动手写 ...

  6. tkinter——GUI设计实操

    1.创建root: from tkinter import * root = Tk() root.title('GUI设计') # root.attributes("-alpha" ...

  7. tkinter的GUI设计:界面与逻辑分离(一)-- 初次见面

    PyQt实现界面与逻辑分离的设计很是方便,详情可以见我的第一篇博文. 不过本文将使用python的标准库 tkinter,来实现界面与逻辑分离的GUI 设计. 我们来设计一个很简单的程序: 目的:长度 ...

  8. Java程序设计11——GUI设计与事件处理A

    1.GUI设计 Java使用AWT和Swing类完成图形用户界面编程,AWT全称是Abstract Window Toolkit,即抽象窗口工具集,它是Sun最早提供的GUI库,只是这个库功能比较有限 ...

  9. C#+Winform记事本程序

    第17章 记事本 如何使用Visual C# 2010设计一个Windows应用程序——记事本,学习,可以进一步掌握MenuStrip(菜单).ToolStrip(工具栏).RichTextBox(高 ...

随机推荐

  1. System.Data.SqlClient.SqlException: 'Incorrect syntax near 'OFFSET'.

    https://www.nopcommerce.com/boards/t/54586/410-not-running-on-local-system.aspx#209684 Hello, I was ...

  2. MYSQL登录及常用命令

    1.mysql服务的启动和停止 mysql> net stop mysql mysql> net start mysql 2.登陆mysql mysql> 键入命令mysql -ur ...

  3. Django(十二)视图--利用jquery从后台发送ajax请求并处理、ajax登录案例

    一.Ajax基本概念 [参考]:https://www.runoob.com/jquery/jquery-ajax-intro.html 异步的javascript.在不全部加载某一个页面部的情况下, ...

  4. editplus的注册码 4.0

    用户名:jb51.net 序列号:9A72F-84A30-82Z46-BFW79-4FTA8 用户名:freeuser 序列号:F15AD-12490-DAZF5-E4W30-E7T80 注册名:Fr ...

  5. Nature

    1.主干 (1)<河图+洛书>:启发伏羲作八卦. (2)<三坟+五典>:失传:伏羲.神农.轩辕.少昊.颛顼.帝喾.唐尧.虞舜. (3)<八索+九丘>:失传:八卦之书 ...

  6. Spring入门之四-------SpringIoC之其他知识点

    一.懒加载 public class Bean1 { public Bean1() { System.out.println(this.getClass().getSimpleName() + &qu ...

  7. [ cocos2d-JS ] 创建项目命令

    cocos new HelloJS -l js -p com.neworigin.HelloJS -d D:\0-Game\cocosJS-project

  8. Local-Pref(本地优先属性)路由本地优先术

    Local-Pref(本地优先属性)路由本地优先术: ①:抓取感兴趣流量——前缀与访问——prefix and access ②:创建路由地图——router-map ③:第一法则——permit 1 ...

  9. 二十五、SAP中输出一条横线

    一.我们代码如下,这个是不输出横线的时候 效果如下 二.输出横线的代码如下 效果如下,多出一条横线

  10. hdu 1160 上升序列 dp

    FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...