python菜鸟学习: 15 GUI界面化记事本
# -*- coding: utf-8 -*-
import tkinter as tk
def getNewCreate():
pass
def getCharcount1(sss):
# 添加字数统
status_str_var.set(
'字符数: {count}'.format(count=len(str(text_pad.get('0.0', 'end-1c')).replace(" ", "").replace("\n", ""))))
def JiShiBen():
global Text1, text_pad, count_word, root
root = tk.Tk()
root.title("记事本")
root.geometry("500x800+100+100")
# 添加一级菜单
menu = tk.Menu(root, tearoff=False)
# 添加二级菜单"文件"
fileMenu = tk.Menu(menu, tearoff=False)
fileMenu.add_command(label='新建', command=getNewCreate)
fileMenu.add_command(label='打开')
fileMenu.add_command(label='保存')
fileMenu.add_command(label='另存为')
fileMenu.add_command(label='关闭')
# 将二级菜单添加到一级菜单中
menu.add_cascade(label='文件', menu=fileMenu)
# 添加二级菜单"编辑"
fileMenu1 = tk.Menu(menu, tearoff=False)
fileMenu1.add_command(label='撤销')
fileMenu1.add_command(label='剪切')
fileMenu1.add_command(label='复制')
fileMenu1.add_command(label='粘贴')
fileMenu1.add_command(label='删除')
fileMenu1.add_command(label='查找')
fileMenu1.add_command(label='查找下一个')
fileMenu1.add_command(label='替换')
fileMenu1.add_command(label='转到')
fileMenu1.add_command(label='全选')
fileMenu1.add_command(label='时间/日期')
# 将二级菜单添加到一级菜单中
menu.add_cascade(label='编辑', menu=fileMenu1)
fileMenu3 = tk.Menu(menu, tearoff=False)
fileMenu3.add_command(label='作者:liyuzhoupan')
fileMenu3.add_command(label='版权:20220913')
menu.add_cascade(label='关于', menu=fileMenu3)
# side为位置:
# TOP 这是默认值,由上到下排列
# BOTTOM 由下到上排列
# LEFT 由左到右排列
# RIGHT 由右到左排列
# fill为填充方式:
# tk.X 横向填充,
# tk.Y纵向填充
# tk.BOTH上下左右全部填充
# place绝对位置:
# 横向位置relx=0.7
# 纵向位置rely=0.9
# 添加行数统计
line_var = tk.StringVar()
status_label = tk.Label(root, textvariable=line_var, bd=1, relief=tk.SUNKEN, width=1, anchor=tk.W, bg='#faebd7')
status_label.pack(side=tk.LEFT, fill=tk.Y)
# 添加输入框
text_pad = tk.Text(root, height=30, width=70, font=18)
text_pad.pack(fill=tk.BOTH, expand=True)
# 绑定输入框事件
text_pad.bind(sequence="<Key>", func=getCharcount1)
# 统计字数限制
global status_str_var
status_str_var = tk.StringVar()
status_str_var.set('字符数: {count}'.format(count=len(str(text_pad.get('0.0', 'end-1c')).replace(" ", ""))))
status_label = tk.Label(root, textvariable=status_str_var, bd=1, relief=tk.SUNKEN, anchor=tk.W, font=18)
status_label.pack_forget()
status_label.pack(side=tk.BOTTOM, fill=tk.X)
# 输入框text_pad添加滚动条scroll
scroll = tk.Scrollbar(text_pad)
# scroll绑定输入框text_pad
text_pad.config(yscrollcommand=scroll.set)
# 滚动是触发text_pad变化
scroll.config(command=text_pad.yview)
# 设置放置位置
scroll.pack(side=tk.RIGHT, fill=tk.Y)
# 加载一级菜单到GUI中界面上
root.config(menu=menu)
root.mainloop()
JiShiBen()
python菜鸟学习: 15 GUI界面化记事本的更多相关文章
- python菜鸟学习心得
禁忌:学习没精力,就是没精打采.没有热情. 禁忌:学习一半,然后,放在一边. 禁忌:不要东一榔头,西一棒锤. 禁忌:学习要用心. 激情是动力,专注是效率 每次学习都是绕着网络转了一圈.还是要一步一个脚 ...
- python实用脚本-通过jenkins界面化导出数据
1.jenkins 配置 2.jenkins 脚本 ansible-playbook /opt/test.yaml --extra-vars "loanno=${loanno}" ...
- head first python菜鸟学习笔记(第六章)
1. Python提供字典,允许有效组织数据,将数据与名关联,从而实现快速查找,而不是以数字关联. 字典是内置数据结构,允许将数据与键而不是数字关联.这样可以使内存中的数据与实际数据的结构保持一致.? ...
- head first python菜鸟学习笔记(第三章)
1.os.chdir()切换到指定目录下,os.getcwd(),得到当前目录. >>> import os>>> os.chdir('D:\\CodeDocume ...
- python自动化学习笔记11-自动化测试UTP框架
前面基本的unittest及ddt已经学过了,现在我们系统把这些知识结合起来,写一个简单的UTP自动化测试框架: 我们先来建基础目录,首先新建一个项目,项目下建父目录UTP,conf目录,用来存放配置 ...
- head first python菜鸟学习笔记(第七章) ——web应用之为数据建模
问题1. #意思是从athletelist.py中导入AthleteListfrom athletelist import AthleteList 源程序代码 import pickle from a ...
- head first python菜鸟学习笔记(第四章)
1,p124,错误:NameError: name 'print_lol' is not defined 要想文件内如图显示,需要把调用BIF print()改为调用第二章的nester模块中的pri ...
- python爬虫练习 -- 签名器+GUI界面(Tkinter)
效果图: 实现步骤如下: 实现原理:其实就是套了一层GUI的壳,主要还是爬虫抓取某个网站返回的数据,然后利用python自带的GUI工具包Tkinter来实现gui界面: 1.爬虫分析: 目标站点:h ...
- 菜鸟试做GUI简单数据库查询界面 python+tkinter+mysql
一.准备工作: 1.安装mysql3.7,创建一个test数据库,创建student表,创建列:(列名看代码),创建几条数据 (以上工作直接用navicat for mysql工具完成) 二.代码: ...
- python实现串口通讯小程序(GUI界面)
python实现串口通讯小程序(GUI界面) 使用python实现串口通讯需要使用python的pyserial库来实现,这个库在安装python的时候没有自动进行安装,需要自己进行安装. 1.安装p ...
随机推荐
- Linux实时同步
实时同步 一.概述 背景: 以前,通过rsync+定时任务实现对文件的定时备份/同步 现在,对于NFS来说,需要进行实时同步 选择: 分布式存储 使用实时同步服务+NFS 选择公有云对象存储OSS,七 ...
- zookeeper05Curator
转https://blog.csdn.net/u012129558/article/details/81076487 1.zookeeper 开源客户端curator介绍 1.1 curator简 ...
- vue-cli环境搭建 (超详细保姆级教程)
一.使用之前,我们先来掌握3个东西是用来干什么的. npm: Nodejs下的包管理器. webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资 ...
- mybatis学习日记2
1.mybatis中的连接池 配置的位置: 主配置文件SqlMapConfig.xml中的dataSource标签,type属性就是用来表示采用何种连接方式 mybatis连接池提供了3种方式的配置 ...
- STM32F0库函数初始化系列:ADC
static void ADC_Config(void) { ADC_InitTypeDef ADC_InitStructure; /* ADCs DeInit */ //ADC_DeInit(ADC ...
- js中的Object.keys、array.map、groupBy、call、apply总结分享
分享几个js中的函数 Object.keys() 首先这个函数是用来干嘛的呢?是用来把一个json字符串里的key全都取出来重新整成一个数组的方法,那么这个函数怎么用呢,接下来贴出我最近碰见的用法: ...
- 使用java.util.Timer实现定时任务,详解Thread.sleep() in a loop, probably busy-waiting问题
很多时候,我们需要定时任务实现一些诸如刷新,心跳,保活等功能.这些定时任务往往逻辑很简单,使用定时任务的框架(例如springboot @Scheduled)往往大材小用. 下面是一个定时任务的典型写 ...
- 用ChatGPT,绘制一个账号系统的C4架构图
hi,我是熵减,见字如面. 昨天我们用ChatGPT来设计一个账号系统,并尝试输出:模型表,类关系图,序列图,状态图等常用的架构设计中常用的元素. 今天,我们继续向更高层级延伸一下,看ChatGPT能 ...
- 钓鱼攻击之:CHM电子书钓鱼
钓鱼攻击之:CHM电子书钓鱼 目录 钓鱼攻击之:CHM电子书钓鱼 1 CHM简介 2 .Chm文件因何变得危险 3 CHM 后门的优点 4 利用过程 4.1 准备工具 4.2 制作恶意chm文件 4. ...
- 一文详解ATK Loss论文复现与代码实战
摘要:该方法的主要思想是使用数值较大的排在前面的梯度进行反向传播,可以认为是一种在线难例挖掘方法,该方法使模型讲注意力放在较难学习的样本上,以此让模型产生更好的效果. 本文分享自华为云社区<AT ...