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

十一、GUI设计-记事本程序的更多相关文章
- 十二、GUI设计-画图程序
"""小小画笔""" from tkinter import *from tkinter.filedialog import *from t ...
- java.awt包提供了基本的java程序的GUI设计工具
java.awt包提供了基本的java程序的GUI设计工具.主要包括下述三个概念: 组件--Component 容器--Container 布局管理器--LayoutManager package T ...
- qt5.5实现 记事本程序
最近由于要做Qt相关的毕业设计课题,以前对Qt完全不了解,对于客户端图形界面程序,也只对Windows下的MFC熟悉, 所以,由于Qt的跨平台特性和相对比较纯的C++的特点,就准备学习一下吧.这两天逛 ...
- 【windows开发实现记事本程序——逻辑篇1】
1. 主要内容 从本节开始介绍windows开发实现记事本程序的逻辑实现部分.本节的主要内容有以下3点: 1. 主窗口定义 -- 主要介绍记事本主界面窗口对应的窗口类及实现方案 2. RichEdi ...
- 【windows开发实现记事本程序——界面篇】
前言 从毕业开始学习windows UI编程,工作中总是和一些API打交道,但是从没有做过一个完整的界面程序.因此打算自己利用空余时间做一个小的项目来总结自己所学的东西.在网上看到许多人建议自己动手写 ...
- tkinter——GUI设计实操
1.创建root: from tkinter import * root = Tk() root.title('GUI设计') # root.attributes("-alpha" ...
- tkinter的GUI设计:界面与逻辑分离(一)-- 初次见面
PyQt实现界面与逻辑分离的设计很是方便,详情可以见我的第一篇博文. 不过本文将使用python的标准库 tkinter,来实现界面与逻辑分离的GUI 设计. 我们来设计一个很简单的程序: 目的:长度 ...
- Java程序设计11——GUI设计与事件处理A
1.GUI设计 Java使用AWT和Swing类完成图形用户界面编程,AWT全称是Abstract Window Toolkit,即抽象窗口工具集,它是Sun最早提供的GUI库,只是这个库功能比较有限 ...
- C#+Winform记事本程序
第17章 记事本 如何使用Visual C# 2010设计一个Windows应用程序——记事本,学习,可以进一步掌握MenuStrip(菜单).ToolStrip(工具栏).RichTextBox(高 ...
随机推荐
- 016、MySQL取本年第一季度开始日期
#取第1季度开始日期 SELECT date_add( dy, INTERVAL ( ) MONTH ) dy FROM ( ) dy ) x ; 效果如下: 不忘初心,如果您认为这篇文章有价值,认同 ...
- awk&sed
sed BRE awk ERE sed 不能采用? awk可以 sed 在匹配的任何时候可以用^,$ awk必须除了在行头和行尾 其他地方必须转义
- 获取目录结构,并写到txt文档里
cmd里直接运行: tree /f > ml.txt 写成bat tree D:\a\ /f > D:\a\目录.txt 效果 卷 本地磁盘 的文件夹 PATH 列表 卷序列号为 18A9 ...
- 小程序封装API
一般我们https请求都是通过wx.request来请求,但是这种请求如果多了,页面会混乱不说,还不好管理,因此我将请求单独拎出去,方便管理,也方便后期维护. // api.js const API_ ...
- vSphere vSwitch网络属性配置详解
1.安全 混杂模式:把vSwitch当成是一个hub,同一台交换机上面所有的虚拟机都能接受到二层数据包. MAC地址更改:当vSwitch上面连接的某一个虚拟机MAC地址发生更改时,vSwitch是否 ...
- 我为NET狂官方面试题-数据库篇答案(转)
题目:http://www.cnblogs.com/dunitian/p/6028838.html 汇总:http://www.cnblogs.com/dunitian/p/5977425.html ...
- Spring Boot2(007):关于Spring beans、依赖注入 和 @SpringBootApplication 注解
一.关于Spring beans 和 依赖注入(Dependency Injection) spring boot 和 Spring 全家桶无缝衔接,开发过程中可以很轻松地使用 Spring 全家桶的 ...
- gem5-gpu全系统模式
# 注意:安装好gem5-gpu后再配置全系统环境 # 下载全系统模拟需要的工具,详见http://gem5.org/Running_gem5#Full_System_.28FS.29_Mode,将L ...
- 课程作业02-1-课后作业1-(1)使用组合数公式利用n!来计算
1.设计思想:运用递归阶乘的函数,依次求出n!.k!.(n-k)!,再根据组合数的公式计算(n!/(k!*(n-k)!)). 2.程序流程图: 3.源程序代码: //信1605-3 20163429 ...
- SciKit-Learn 加载数据集
章节 SciKit-Learn 加载数据集 SciKit-Learn 数据集基本信息 SciKit-Learn 使用matplotlib可视化数据 SciKit-Learn 可视化数据:主成分分析(P ...