首页 > 其他分享 >代码5

代码5

时间:2024-04-29 14:57:04浏览次数:17  
标签:Text 代码 tag w1 组件 文本 self

"""Text多行输入测试"""
# 导入tkinter库,这是一个用于创建图形用户界面(GUI)的Python库
from tkinter import *

# 导入tkinter库中的messagebox模块,用于显示对话框(虽然在此代码中并未使用到)
from tkinter import messagebox

# 导入webbrowser库,用于在默认浏览器中打开网址
import webbrowser


# 定义一个Application类,它继承自tkinter库中的Frame类
class Application(Frame):
    """一个用于创建经典GUI程序的类"""

    # 类的初始化方法
    def __init__(self, master=None):
        """初始化Application类的实例"""
        # 调用父类的初始化方法,使得我们可以在子类中调用父类的方法
        # 这里是多态性的一个应用,super()代表父类
        super().__init__(master)

        self.master = master  # 保存对根窗口的引用

        self.pack()  # 将Application对象(即Frame)打包到其父组件(这里是根窗口),使其显示

        self.create_widget()  # 调用方法创建GUI组件

    # 定义一个方法来创建GUI的各种组件
    def create_widget(self):
        """创建并添加一个文本输入框及多个按钮到GUI界面"""
        # 创建一个Text组件,用于多行文本输入和显示
        self.w1 = Text(self.master, width=40, height=12, bg="white")
        self.w1.pack()  # 打包Text组件到根窗口

        # 在Text组件中插入初始文本
        self.w1.insert(1.0, "013456789 nabcdefg")
        self.w1.insert(2.3, "锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦\n")

        # 创建并添加多个按钮,每个按钮都绑定了一个特定的命令
        Button(self, text="重复插入文本", command=self.insert_text).pack(side="left")
        Button(self, text="返回文本", command=self.return_text).pack(side="left")
        Button(self, text="添加图片", command=self.add_image).pack(side="left")
        Button(self, text="添加组件", command=self.add_widget).pack(side="left")
        Button(self, text="通过tag精确控制文本", command=self.test_tag).pack(side="left")

        # 定义按钮对应的各个方法

    def insert_text(self):
        """在Text组件中插入文本"""
        self.w1.insert(INSERT, 'Gaoqi :)')  # 在光标处插入文本
        self.w1.insert(END, '[sxt]')  # 在文本最后插入内容

    def return_text(self):
        """返回并打印Text组件中的特定文本和全部文本"""
        print(self.w1.get(1.2, 1.6))  # 打印1.2到1.6索引之间的文本
        self.w1.insert(1.8, "gaoqi")  # 在1.8索引处插入文本
        print("所有文本内容:\n" + self.w1.get(1.0, END))  # 打印全部文本内容

    def add_image(self):
        """在Text组件中添加图片"""
        self.photo = PhotoImage(file="imgs/logo.gif")  # 从文件加载图片
        self.w1.image_create(END, image=self.photo)  # 在Text组件的最后添加图片

    def add_widget(self):
        """在Text组件中添加一个按钮组件"""
        b1 = Button(self.w1, text='爱尚学堂')  # 创建一个按钮
        self.w1.window_create(INSERT, window=b1)  # 在Text组件的当前光标位置插入该按钮

    def test_tag(self):
        """通过tag精确控制Text组件中的文本"""
        self.w1.delete(1.0, END)  # 清空Text组件中的内容
        self.w1.insert(INSERT, "good good study, day day up!\n北京尚学堂\n百战程序员瓜n百度")  # 插入新文本

        # 为特定文本添加tag,并配置tag的样式
        self.w1.tag_add("good", 1.0, 1.9)
        self.w1.tag_config("good", background="yellow", foreground="red")

        self.w1.tag_add("baidu", 4.0, 4.2)
        self.w1.tag_config("baidu", underline=True)

        # 为带有"baidu" tag的文本绑定鼠标左键点击事件
        self.w1.tag_bind("baidu", "<Button-1>", self.webshow)

    def webshow(self, event):
        """在默认浏览器中打开百度网址"""
        webbrowser.open("http://www.baidu.com")

    # 创建一个Tk窗口实例作为根窗口


root = Tk()
root.title("Text多行输入测试")  # 设置窗口的标题

# 创建Application类的实例,并将其与根窗口关联起来
app = Application(master=root)

# 进入Tkinter事件循环,等待用户的交互操作
root.mainloop()

标签:Text,代码,tag,w1,组件,文本,self
From: https://www.cnblogs.com/aihonghua/p/18165702

相关文章

  • 代码6
    """radioButton测试"""fromtkinterimport*fromtkinterimportmessageboxclassApplication(Frame):"""一个用于创建经典GUI程序的类"""def__init__(self,master=None):"""初始化方法......
  • 代码7
    """checkbutton用法"""#导入tkinter库,这是一个用于创建图形用户界面(GUI)的Python库fromtkinterimport*#导入tkinter库中的messagebox模块,用于显示对话框fromtkinterimportmessagebox#定义一个Application类,它继承自tkinter库中的Frame类classApplication(Frame......
  • java代码运行出现DENIED Redis is running in protected mode because protected mode
    这个错误是因为开启了保护模式,导致出错。所以需要关闭redis的保护模式。编辑redis的redis.config  注释bind127.0.0.1 、修改protected-mode为no、修改 daemonize为no然后重启redis ......
  • Godot的游戏开发思考(无代码)
    目录前言GDScriptorC#?C#IOC开发代码和引擎的平衡Godot如何学习多而精炼的小Demo后面的学习的方向Ai绘画和Ai声音的学习前言我断断续续学了快半年的Godot了吧,从去年的Unity事件发生之后开始接触,然后断断续续学到了现在,这里就简单讲讲我对Godot的看法GDScriptorC#?GDScript......
  • 重大更新!开源无代码 / 低代码平台 NocoBase v1.0 正式发布!
    NocoBase是一个极易扩展的开源无代码开发平台。完全掌控,无限扩展,助力你的开发团队快速响应变化,显著降低成本,不必投入几年时间和数百万资金研发,只需要花几分钟部署NocoBase。NocoBase中文官网官方文档在线Demov1.0里程碑历时3年,NocoBase迎来第一次根版本号升级,版本号......
  • 39天【代码随想录算法训练营34期】第九章 动态规划part02(● 62.不同路径 ● 63. 不同
    62.不同路径classSolution:defuniquePaths(self,m:int,n:int)->int:table=[[0]*n]*mforxinrange(n):table[0][x]=1foryinrange(m):table[y][0]=1foryinrange(1,m):......
  • 小程序图片缓存策略(不改代码更换OSS图片)
    昨天,后端给我提了一个问题:他更换了CDN上的图片,但是他打开小程序来看,还是旧图片,他尝试过删除小程序,重新进,还是旧图片。我第一反应是:“你有没有清CDN缓存?“他说:”我在阿里云CDN控制台刷新缓存了,都两三天了,还是旧图片。”(后来我看过刷缓存记录,一天前刚刷的,他夸张了。。。)我说:“那......
  • Git 代码管理规范
     Git代码管理规范  分支命名master分支master为主分支,也是用于部署生产环境的分支,需要确保master分支稳定性。master分支一般由release以及hotfix分支合并,任何时间都不能直接修改代码。develop分支develop为开发环境分支,始终保持最新完成以及bug修复后的代码,......
  • 一个开源轻量级的C#代码格式化工具(支持VS和VS Code)
    前言C#代码格式化工具除了ReSharper和CodeMaid,还有一款由.NET开源、免费(MITLicense)、轻量级的C#语言代码格式化工具:CSharpier。工具介绍CSharpier是一款开源、免费、轻量级的C#语言代码格式化工具。它使用Roslyn来解析你的代码,并根据其自身的规则重新格式化代码。工具支持IDE......
  • 【注意】当同一个Class的多个对象出现在同一段代码内的时候,极易出错。
    同一个方法里,多个BankOrderFlow对象...这像“shǐ”一样的代码下面的paymentQuery方法坐落于我们lijianjin系统的LiJianJinPaymentQueryBizService。这两个bankOrderFlow、orderFlow,...乱花渐欲迷人眼的赶脚,但其实,这是像“shǐ”一样的代码。    无独有偶,bug来了......