十一、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(高 ...
随机推荐
- 017.CI4框架CodeIgniter数据库操作之:Updata更新修改一条数据
01. 在Model中写入数据库操作的代码如下: <?php namespace App\Models\System; use CodeIgniter\Model; class User_mod ...
- Golang的单目(一元)运算符-地址操作符和接收操作符
Golang的单目(一元)运算符-地址操作符和接收操作符 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Golang的单目(一元)运算符概述 常见的地址操作符: &: ...
- Java8 Stream分组
//根据排课id分组 Map<Integer, List<Schedule4Homework>> idSchedule4HomeworksMap = schedule4Home ...
- Ajax学习系列——Ajax介绍及优缺点
一.什么是Ajax Ajax即“Asynchronous JavaScript And XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术. Ajax = 异步Jav ...
- 二十二、SAP中创建一个内表,并添加内容循环输出显示
一.直接上代码 二.输出如下
- 077-PHP数组删除元素
<?php $arr=array(98,'hello',67,'A',85,NULL); //定义一个数组 echo '删除元素之前数组中的元素个数为:'.count($arr); //输出数组 ...
- Java中的String介绍
一.概述 String是代表字符串的类,本身是一个最终类,使用final修饰,不能被继承. 二.String字符串的特征 1. 字符串在内存中是以字符数组的形式来存储的. 示例如下,可以从String ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-barcode
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- Perl 笔试题2 -- 统计单词频次
Nvidia 2019 perl 笔试题 统计一个文件内单词的频次并排序 文本如下: "ALL happy families resemble one another; every unha ...
- oracle查询语句注意事项:
我想查出datatype 不等于1的所有结果,包括空. '; //这条sql查不出datatype为空的数据 发现oracle需要使用 is null .is not null查询空或非空 ' ...