基於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()

運行效果圖如下:
在這裏插入圖片描述

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