from tkinter import *
from tkinter import messagebox
# 导入库文件
class Appication(Frame):
"""
一个经典的 GUI 类的写法
"""
# 定义类(Appication)、继承于 Frame 框架 (虚拟的矩形框架)
def __init__(self, master = None):
# 定义构造函数、并初始化父类为空
super().__init__(master)
# 通过 super() 调用父类、并将 master 传进去
self.master = master
# 令此类中的 master 等于传入的 window
self.pack()
# 布局此窗口
self.CreateWidget()
# 调用另一个函数 CreateWidget
def CreateWidget(self):
"""
用途:创建组件
"""
......
......
if __name__ == "__main__":
window = Tk()
# 创建主窗口
window.geometry("500x200+200+200")
window.title('一个经典的GUI程序')
# 对窗口进行大小、位置及名字设置
app = Appication(master = window)
# 调用新创建的类、并进行初始化、将 master = window (主窗口)传递进去
window.mainloop()
# 调用 mainloop 方法、启用窗口并进入事件循环
Text 多行文本框
# class Appication(Frame):
# """
# 一个经典的 GUI 类的写法
# """
def CreateWidget(self):
"""
用途:创建组件
"""
self.text1 = Text(self, width = 40, height = 12, bg = "gray")
# 宽度为 40 个字母 (20个汉字)、高度为 12 行、背景色为灰色
self.text1.pack()
# 布局此多行文本框
# class Appication(Frame):
# """
# 一个经典的 GUI 类的写法
# """
def CreateWidget(self):
"""
用途:创建组件
"""
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")
# class Appication(Frame):
# """
# 一个经典的 GUI 类的写法
# """
def insertText(self):
# INSERT 索引表示在光标处插入
self.text1.insert(INSERT, "xiaohan")
# END 索引表示在最后插入
self.text1.insert(END, "[新年快乐]")
def returnText(self):
# Indexes (索引) 是用来指向 Text 组件中文本的位置
# Text 的组件索引也是对应字符的位置
# 核心: 行号以 1 开始、列号以 0 开始
print(self.text1.get(1.2, 1.6))
print("所有文本内容: \n" + self.text1.get(1.0, END))
def addImage(self):
# global photo
self.photo = PhotoImage(file = "image\\xiaohan.gif")
self.text1.image_create(END, image = self.photo)
def addWidget(self):
self.button1 = Button(self.text1, text = "学习")
# 在 Text 创建组件的命令
self.text1.window_create(INSERT, window = self.button1)
def testTag(self):
self.text1.delete(1.0, END)
self.text1.insert(INSERT, "good good study, day day up!\n学习带头人\nxiaohan\n百度")
self.text1.tag_add("good", 1.0, 1.9)
# 重命名文本但是不显示出来
self.text1.tag_config("good", background = "black", foreground = "red")
# 将重命名的文本查找到后、令其背景色为黑、前景色为红
self.text1.tag_add("baidu", 4.0, 4.2)
# 重命名文本但是不显示出来
self.text1.tag_config("baidu", underline = True)
# 将重命名的文本查找到后、在其下面加上下划线
self.text1.tag_bind("baidu", "" , self.WebShow)
# 将重命名的文本查找到后、绑定方法
import webbrowser # 调用打开网址的库文件
# class Appication(Frame):
# """
# 一个经典的 GUI 类的写法
# """
def WebShow(self, event):
webbrowser.open("http://www.baidu.com")
from tkinter import *
from tkinter import messagebox
import webbrowser # 调用打开网址的库文件
# 导入库文件
class Appication(Frame):
"""
一个经典的 GUI 类的写法
"""
# 定义类(Appication)、继承于 Frame 框架 (虚拟的矩形框架)
def __init__(self, master = None):
# 定义构造函数、并初始化父类为空
super().__init__(master)
# 通过 super() 调用父类、并将 master 传进去
self.master = master
# 令此类中的 master 等于传入的 window
self.pack()
# 布局此窗口
self.CreateWidget()
# 调用另一个函数 CreateWidget
def CreateWidget(self):
"""
用途:创建组件
"""
self.text1 = Text(self, width = 40, height = 12, bg = "gray")
# 宽度为 20 个字母 (10个汉字)、高度为 12 行
self.text1.pack()
self.text1.insert(1.0, "12345\n上山打老虎")
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 索引表示在光标处插入
self.text1.insert(INSERT, "xiaohan")
# END 索引表示在最后插入
self.text1.insert(END, "[新年快乐]")
def returnText(self):
# Indexes (索引) 是用来指向 Text 组件中文本的位置
# Text 的组件索引也是对应字符的位置
# 核心: 行号以 1 开始、列号以 0 开始
print(self.text1.get(1.2, 1.6))
print("所有文本内容: \n" + self.text1.get(1.0, END))
def addImage(self):
# global photo
self.photo = PhotoImage(file = "image\\xiaohan.gif")
self.text1.image_create(END, image = self.photo)
def addWidget(self):
self.button1 = Button(self.text1, text = "学习")
# 在 Text 创建组件的命令
self.text1.window_create(INSERT, window = self.button1)
def testTag(self):
self.text1.delete(1.0, END)
self.text1.insert(INSERT, "good good study, day day up!\n学习带头人\nxiaohan\n百度")
self.text1.tag_add("good", 1.0, 1.9)
# 重命名文本但是不显示出来
self.text1.tag_config("good", background = "black", foreground = "red")
# 将重命名的文本查找到后、令其背景色为黑、前景色为红
self.text1.tag_add("baidu", 4.0, 4.2)
# 重命名文本但是不显示出来
self.text1.tag_config("baidu", underline = True)
# 将重命名的文本查找到后、在其下面加上下划线
self.text1.tag_bind("baidu", "" , self.WebShow)
# 将重命名的文本查找到后、绑定方法
def WebShow(self, event):
webbrowser.open("http://www.baidu.com")
if __name__ == "__main__":
window = Tk()
# 创建主窗口
window.geometry("500x200+200+200")
window.title('一个经典的GUI程序')
# 对窗口进行大小、位置及名字设置
app = Appication(master = window)
# 调用新创建的类、并进行初始化、将 master = window (主窗口)传递进去
window.mainloop()
# 调用 mainloop 方法、启用窗口并进入事件循环