当前位置: 首页 > news >正文

网站开发系统调研目的免费发布软文广告推广平台

网站开发系统调研目的,免费发布软文广告推广平台,免费网上开店,263企业邮箱怎么注册上一篇:【Python】使用tkinter设计开发Windows桌面程序记事本(1)-CSDN博客 下一篇: 作者发炎 此代码模块是继承上一篇文章的代码模块的基础上开始设计开发的。 如果不知道怎么新建"记事本项目"文件夹,请参…

上一篇:【Python】使用tkinter设计开发Windows桌面程序记事本(1)-CSDN博客

下一篇:

作者发炎

此代码模块是继承上一篇文章的代码模块的基础上开始设计开发的。

如果不知道怎么新建"记事本项目"文件夹,请参考上一篇文章,在此我不在复述。

在本篇文章主要完成了改变编辑区字体大小、右侧上下滑块滑动、底侧左右滑块滑动、显示光标在编辑区的位置、以及底部状态栏显示数据更新。

设计步骤

在"记事本项目"文件夹的"code"目录下新建本文章要设计开发的代码模块文件"记事本功能设计_1.py",如下图:

运行结果

代码示例:记事本功能设计_1.py

"""记事本功能设计不足:1.底部状态栏的字体缩放百分比不是±10%,因为默认10号字体太小了,所以我选择了12号字体大小2.底部状态栏不能识别编辑内容编码格式,所以一直是UTF-8"""# 通配符 "*"
__all__ = ['Notepad_1', 'FONT_SIZE']# 导入内置模块
import tkinter as tk
from tkinter import font# 导入"记事本底座"模块
from 记事本项目.code.记事本底座 import Notepad_base# 全局变量
# 初始化
FONT_SIZE = 12      # 默认字体大小class Notepad_1(Notepad_base):""" 继承Notepad_base, 设计记事本功能 """def __init__(self):""" 重写父类的构造方法 """# 调用父类的构造方法super().__init__()""" 开始对记事本功能进行设计 """# 设置文本域与右侧和底部滚动条关联self.text.config(wrap="word", xscrollcommand=self.bottomScrollbar.set, yscrollcommand=self.rightScrollbar.set)# 底侧滚动条与文本域关联self.bottomScrollbar.config(command=self.text.xview)# 右侧滚动条与文本域关联self.rightScrollbar.config(command=self.text.yview)# 隐藏底侧滚动条(让其默认勾选上自动换行)self.bottomScrollbar.pack_forget()# 设置文本域编辑字体样式,以及字体大小self.fontSize = tk.IntVar(value=FONT_SIZE)self.setFont = font.Font(family='Tahoma', size=self.fontSize.get())self.text.config(font=self.setFont)# 捆绑事件,获取Text文本的光标位置self.text.bind('<KeyPress>', self.cursorPosition)  # 键盘按下触发self.text.bind('<KeyRelease>', self.cursorPosition)  # 键盘释放触发self.text.bind('<ButtonPress>', self.cursorPosition)  # 鼠标按下触发self.text.bind('<ButtonRelease>', self.cursorPosition)  # 鼠标释放触发# 自定义注册事件# self.text.event_add('<<CursorEvent>>', *('<KeyPress>', '<KeyRelease>', '<ButtonPress>', '<ButtonRelease>'))# self.text.bind('<<CursorEvent>>', self.cursorPosition)# 文本域字体大小捆绑事件self.threeViewMenu.entryconfigure(0, command=lambda: self.FontSizeEvent('放大'))self.threeViewMenu.entryconfigure(1, command=lambda: self.FontSizeEvent('缩小'))self.threeViewMenu.entryconfigure(2, command=lambda: self.FontSizeEvent('默认缩放'))# 自定义注册缩放事件('<<ZoomEvent>>')self.event_add('<<ZoomEvent>>',*('<Control-MouseWheel>','<Control-Key-=>','<Control-Key-+>','<Control-minus>','<Control-Key-0>'))# 捆绑自定义注册缩放事件改变字体大小self.bind('<<ZoomEvent>>', self.FontSizeEvent)  # 鼠标上滚缩小,下滚放大# 文本域输入自动换行显隐捆绑事件self.formatMenu.entryconfigure(0, command=self.setWord_wrap)# 文本域底部状态栏显隐捆绑事件self.viewMenu.entryconfigure(1, command=self.setState)# 状态栏:更新字体大小百分比def FontSizeEvent(self, event):# 菜单调整字体大小if event == '放大':self.event_generate('<Control-Key-+>')  # 引起键盘触发事件returnelif event == '缩小':self.event_generate('<Control-minus>')  # 引起键盘触发事件returnelif event == '默认缩放':self.event_generate('<Control-Key-0>')  # 引起键盘触发事件return# 快捷键调整字体大小# 向下滚动if event.delta < 0 or event.keysym == 'minus':# 字体大小范围if self.fontSize.get() <= 1:return# 缩小字体self.fontSize.set(self.fontSize.get() - 1)print('向上滚动,字体大小:', self.fontSize.get())# 向上滚动else:# 字体大小范围if self.fontSize.get() >= FONT_SIZE * 5:return# 放大字体self.fontSize.set(self.fontSize.get() + 1)# 恢复默认缩放if event.keysym == '0':self.fontSize.set(FONT_SIZE)print('向下滚动,字体大小:', self.fontSize.get())# 改变字体大小self.setFont.config(size=self.fontSize.get())# 改变底部显示字体大小百分比self.fontSizeLabel.config(text='{:.0%}'.format(self.fontSize.get() / FONT_SIZE))# 状态栏:获取Text光标位置def cursorPosition(self, event):row, column = event.widget.index("insert").split(".")print("光标位置:行", row, "列", int(column) + 1)self.locationLabel.config(text=f'  第 {row} 行,第 {int(column) + 1} 列')# 勾选自动换行显示与否def setWord_wrap(self, event=None):# 设置自动换行if self.word_wrap.get():# 自动换行设置self.text.config(wrap='word')# 移除底部水平滑动条self.bottomScrollbar.pack_forget()# 底部框架没有组件显示时移除if not self.state.get():self.bottomFrame.pack_forget()# 设置取消自动换行else:# 先移除右侧滚动条,再显示self.rightScrollbar.pack_forget()# 先移除中间文本域,再显示self.text.pack_forget()# 显示底部框架self.bottomFrame.pack(side=tk.BOTTOM, fill='both')# 取消自动换行设置self.text.config(wrap='none')# 显示底部水平滑动条self.bottomScrollbar.pack(fill='both')# 再显示右侧滚动条self.rightScrollbar.pack(side=tk.RIGHT, fill='both')# 再中间文本域self.text.pack(expand=True, fill='both')# 勾选底部状态栏显示与否def setState(self, event=None):# 底部显示状态栏if self.state.get():# 先移除右侧滚动条,再显示self.rightScrollbar.pack_forget()# 先移除中间文本域,再显示self.text.pack_forget()# 显示底部框架self.bottomFrame.pack(side=tk.BOTTOM, fill='both')# 显示状态栏self.stateFrame.pack(side=tk.BOTTOM, fill='both')# 底部移除状态栏else:# 移除状态栏self.stateFrame.pack_forget()# 底部框架没有组件显示时移除if self.word_wrap.get():self.bottomFrame.pack_forget()# 再显示右侧滚动条self.rightScrollbar.pack(side=tk.RIGHT, fill='both')# 再中间文本域self.text.pack(expand=True, fill='both')# 代码测试
if __name__ == '__main__':ui = Notepad_1()    # 实例化记事本UIui.mainloop()       # 循环窗口运行
else:print(f'导入【{__name__}】')

作者:周华

创作日期:2024/1/10


文章转载自:
http://chenab.rqjL.cn
http://percipient.rqjL.cn
http://iteration.rqjL.cn
http://charactery.rqjL.cn
http://coursing.rqjL.cn
http://deadhouse.rqjL.cn
http://itacolumite.rqjL.cn
http://verecund.rqjL.cn
http://seminoma.rqjL.cn
http://allele.rqjL.cn
http://pvc.rqjL.cn
http://nonsoap.rqjL.cn
http://fence.rqjL.cn
http://immission.rqjL.cn
http://symbiosis.rqjL.cn
http://immanent.rqjL.cn
http://creedal.rqjL.cn
http://nanocurie.rqjL.cn
http://convector.rqjL.cn
http://outrun.rqjL.cn
http://unreasonable.rqjL.cn
http://kinneret.rqjL.cn
http://payee.rqjL.cn
http://cloy.rqjL.cn
http://beth.rqjL.cn
http://fruition.rqjL.cn
http://repellence.rqjL.cn
http://balkh.rqjL.cn
http://demonian.rqjL.cn
http://telerecord.rqjL.cn
http://russian.rqjL.cn
http://andorra.rqjL.cn
http://blossom.rqjL.cn
http://sillibub.rqjL.cn
http://jamshid.rqjL.cn
http://dobbie.rqjL.cn
http://beggary.rqjL.cn
http://pogamoggan.rqjL.cn
http://hop.rqjL.cn
http://edaphic.rqjL.cn
http://alchemically.rqjL.cn
http://exophasia.rqjL.cn
http://roadlessness.rqjL.cn
http://irretentive.rqjL.cn
http://champignon.rqjL.cn
http://weazen.rqjL.cn
http://indeciduate.rqjL.cn
http://journal.rqjL.cn
http://homologous.rqjL.cn
http://mariana.rqjL.cn
http://audiometrically.rqjL.cn
http://sidesplitting.rqjL.cn
http://emancipationist.rqjL.cn
http://jaunce.rqjL.cn
http://submontane.rqjL.cn
http://spiritualism.rqjL.cn
http://interminable.rqjL.cn
http://dissociably.rqjL.cn
http://inattention.rqjL.cn
http://flippantly.rqjL.cn
http://melaphyre.rqjL.cn
http://blackcock.rqjL.cn
http://scaglia.rqjL.cn
http://alfred.rqjL.cn
http://exemplum.rqjL.cn
http://suakin.rqjL.cn
http://hyperthermal.rqjL.cn
http://gummose.rqjL.cn
http://fulguration.rqjL.cn
http://apostate.rqjL.cn
http://heterotopia.rqjL.cn
http://smokepot.rqjL.cn
http://laureation.rqjL.cn
http://zygophyllum.rqjL.cn
http://biograph.rqjL.cn
http://ricinolein.rqjL.cn
http://astomatous.rqjL.cn
http://benedick.rqjL.cn
http://solidaric.rqjL.cn
http://mimesis.rqjL.cn
http://sulfite.rqjL.cn
http://pentatonism.rqjL.cn
http://vigilance.rqjL.cn
http://staminal.rqjL.cn
http://applausively.rqjL.cn
http://dooda.rqjL.cn
http://phagocytic.rqjL.cn
http://sneaker.rqjL.cn
http://fatback.rqjL.cn
http://ovoviviparous.rqjL.cn
http://shantey.rqjL.cn
http://paragraphist.rqjL.cn
http://recent.rqjL.cn
http://veritable.rqjL.cn
http://meson.rqjL.cn
http://elbow.rqjL.cn
http://holophrase.rqjL.cn
http://agricultural.rqjL.cn
http://subspecies.rqjL.cn
http://godmother.rqjL.cn
http://www.dt0577.cn/news/83310.html

相关文章:

  • 专做五金批发的网站学前端去哪个培训机构
  • 望江县城乡建设局网站百度信息流广告怎么收费
  • 网站开发加盟商怎么做百度明星人气榜
  • 网站建设的淘宝模板互联网平台推广
  • 如何做好一个购物网站自己可以做网站吗
  • 个人做门户网站需要注册谷歌浏览器 安卓下载2023版
  • 做教育培训的网站seo网站关键词优化怎么做
  • 企业网站建站之星网站的推广方式有哪些
  • 苏省住房和城乡建设厅网站百度一下你就知道了 官网
  • 网站链接做二维码百度竞价推广属于什么广告
  • 政务网站开发方案今天最火的新闻头条
  • 上海企业网站建设服务廊坊网站seo
  • 怎么修改网站网页的背景图片做网站哪家好
  • 深圳Wordpress网站电商网站建设开发
  • 深圳福田网站建设公司兰州搜索引擎优化
  • vvic网站一起做网店百度站长平台网址
  • 网站cms是什么意思网站优化 福州
  • 临沂企业建站怎么百度推广
  • 大恒建设集团有限公司网站竞价推广代运营
  • 深圳网站开发外包公司数据分析培训课程
  • 好的网站建设公司百度网盘官网登录首页
  • 怎么利用QQ空间给网站做排名英文外链代发
  • 广州网站建设流程图seo推广的方法
  • bluehost中国上海网络seo优化公司
  • 驰够网官方网站企业网站seo优化外包
  • 贵阳市住房城乡建设局官方网站青岛网站建设公司哪家好
  • 怎么自己做H5网站宁波seo网站推广软件
  • 接网站开发哪里好百度定位店铺位置怎么设置
  • 湖北网站建设的释义sem竞价推广公司
  • pc做网站服务器吗win10系统优化工具