基于Tkinter的Text组件的一个小程序

话不多说,Tkinter中各组件属性很多,对应函数也不少,学习时不用面面俱到,学会使用方法,也不用记忆,需要时拿来用就可以。下面是学习text组件时边学边敲出来的代码,留作以后需要查看。

# GUI经典写法:面向对象的写法
# Frame框架是一个容器,放其他组件的容器
# 下面是一个测试经典的GUI程序的写法,使用面向对象的方式
# Text多行文本组件
#   属性有:很多
#   方法insert在指定位置插入、delete指定区域删除
#   方法tag_add指定一段区域的tag,然后通过tag_config来给这个tag配置属性,通过tag_bind可以加事件。
# 另外pack布局时,可以设定side = 'left' 之类的可以将其简单排版。

from tkinter import *
from tkinter import messagebox
import os
import webbrowser


class Application(Frame):
	"""一个经典的GUI程序"""

	def __init__(self,master=None):#构造器,构造一个组件对象
		super().__init__(master)   #super代表的是父类的定义,而不是父类对象。
		self.master = master
		self.pack()
		self.createWidget()

	def createWidget(self):
		self.w1 = Text(self,width = 40, height = 12, bg = 'white')
		self.w1.pack()
		self.w1.insert(1.0,"012346789\nabcdefghi")
		self.w1.insert(2.4,"Nice to meet you!")
		Button(self,text='插入文本',command = self.insertText).pack(side = 'left')
		Button(self,text='返回文本',command = self.returnText).pack(side = 'left')
		Button(self,text='添加图片',command = self.addImage).pack(side = 'left')
		Button(self,text='添加组件',command = self.addWidget).pack(side = 'left')
		Button(self,text='Tag精确控制文本',command = self.testTag).pack(side = 'left')

	def insertText(self):
		#INSERT索引表示在光标处插入
		#END表示在在最后插入
		self.w1.insert(INSERT,"baidu")
		self.w1.insert(END,'[end]')

	def returnText(self):
		print(self.w1.get(1.2,1.6))
		self.w1.insert(1.8,"608")
		print("All the Text:\n"+self.w1.get(1.0,END))

	def addImage(self):
		self.photo = PhotoImage(file = 'imgs/icon1.png')
		self.w1.image_create(END,image = self.photo)

	def addWidget(self):
		b1 = Button(self.w1,text = 'test')
		self.w1.window_create(INSERT,window = b1)

	def testTag(self):
		self.w1.delete(1.0,END)
		self.w1.insert(INSERT,"Hello,I'm Sophia.\n I'm from China。\nI'm working in baidu。")
		self.w1.tag_add("gd",3.15,3.21)
		self.w1.tag_config('gd',underline = True,foreground = 'red')
		self.w1.tag_bind("gd","<Button-1>",self.webshow)

	def webshow(self,event):
		webbrowser.open("http://www.baidu.com")

if __name__ == '__main__':
	root = Tk()
	root.geometry("600x200+200+300")
	root.title("一个GUI程序")
	app = Application(master=root)
	root.mainloop()

运行效果图如下:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章