Python_tkinter_info

tkinter库说明

这是一个相对轻量化的GUI库,因为它是python的原生库,不需要额外的安装库文件,因此存在很强的可移植性。

但不建议用它来做很绚丽的GUI,这将会很麻烦,直接引用其他的三方库会更加方便,这个库更适合用来做简单的界面,将功能代码从终端中解放出来。

在python标准库中,存在参考资料

1.用例说明(基础版)

这个用例主要是实现了排版和,输入内容获取,然后输出到文本框,点击按键触发函数,以及弹窗

from tkinter import *
import tkinter.messagebox

class Main_GUI():
	def __init__(self,window):
		self.window = window

	def set_window_ui(self):
		self.window.title('basic demo 小工具 by alee')	# ui标题
		self.window.geometry('600x400+700+350')	# ui坐标,*x*(长宽);+*+*(屏幕显示位置)
		self.window.attributes('-alpha',0.9)	# 窗口属性,alpha是透明度,后面的小数是透明度设置(0-1)
		# grid方法:
		# row 行号:
		# column:列号
		# rowspan:合并一列中的多个行单元
		# columnspan:合并一个行中的多个列单元
		# sticky:NSWE,上下左右对齐,左右居中则:E+W;上下居中则:N+S;全居中则:N+S+E+W
		self.text_label_fill0 = Label(self.window, text='', width=1).grid(row=0, column=0)# 美化填充列
		self.text_label1 = Label(self.window, text='input:',width=7, height=2).grid(row=0, column=1, sticky=E)# 显示文本
		self.text_label_fill1 = Label(self.window, text='', width=1).grid(row=0, column=2)# 美化填充列
		self.ip_addr_entry = Entry(self.window)# 输入框
		self.ip_addr_entry.grid(row=0,column=3)# 格式在当前版本的库中必须换行,不然会报错
		self.text_label_fill2 = Label(self.window, text='', width=1).grid(row=0, column=4)# 美化填充列
		self.check_button1 = Button(self.window, text='output', command=self.Output).grid(row=0, column=5)
		self.text_label_fill3 = Label(self.window, text='', width=1).grid(row=0, column=6)# 美化填充列
		self.check_button2 = Button(self.window, text='message', command=self.Message).grid(row=0, column=7)
		self.result_text = Text(self.window, width=60, height=20)# 文本输出框
		self.result_text.grid(row=1, column=1, columnspan=7)# 格式在当前版本的库中必须换行,不然会报错

	# 文本显示函数
	def Output(self):
		entry_data = self.ip_addr_entry.get()+'\n'
		self.result_text.insert(END,entry_data)

	# 弹窗函数
	def Message(self):
		tkinter.messagebox.showinfo('hi','This is a Demo Tool!')

if __name__ == '__main__':
	window = Tk()
	GUI_HOME = Main_GUI(window)
	GUI_HOME.set_window_ui()
	window.mainloop()

效果图:

2.用例说明(下拉版)

这个用例主要是新增了下拉框,可选择模式。

from tkinter import *
from tkinter import ttk
import tkinter.messagebox
import time

class Main_GUI():
	def __init__(self,window):
		self.window = window

	def set_window_ui(self):
		self.window.title('easy demo 小工具 by alee')
		self.window.geometry('500x500+700+350')
		self.window.attributes('-alpha',0.9)
		self.text_label_fill0 = Label(self.window, text='', width=1).grid(row=0, column=0)
		self.text_label1 = Label(self.window, text='model:', height=3).grid(row=0, column=1, sticky=W+E)
		self.cmb = ttk.Combobox(self.window, width=9)# 下拉菜单控件,需要先导入ttk库
		self.cmb['value'] = ('model0','model1','model2','model3')# 下拉菜单列表内容
		self.cmb.current(0)# 指定默认显示在下拉框中的内容
		self.cmb.grid(row=0, column=2, sticky=W)# 格式在当前版本的库中必须换行,不然会报错
		self.check_button1 = Button(self.window, text='message', command=self.Message).grid(row=0, column=3)
		self.result_text = Text(self.window, width=50, height=20)
		self.result_text.grid(row=1, column=1, columnspan=3)
		self.result_text.insert(END,banner)
		self.text_label2 = Label(self.window, text='command:', height=3).grid(row=2, column=1, sticky=W)
		self.command_entry = Entry(self.window, width=30)
		self.command_entry.grid(row=2,column=2)
		self.check_button2 = Button(self.window, text='run', command=self.Run, width=5).grid(row=2, column=3, sticky=W+E)

	def FuncA(self,cmd):
		entry_data = 'model:'+self.cmb.get()+'\nhi, your command is '+cmd+'\n'+'================================\n'
		self.result_text.insert(END,entry_data)


	def Run(self):
		cmd = self.command_entry.get()
		if cmd =='':
			cmd = 'Null'
		current_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
		begin_data = '['+current_time+']'+'command: '+cmd+'\n'
		self.result_text.insert(END,begin_data)
		prt_funca = self.FuncA(cmd)

	def Message(self):
		tkinter.messagebox.showinfo('hi','This is a Demo Tool!')

if __name__ == '__main__':
	banner = '''
================================
    .___                     
  __| _/____   _____   ____  
 / __ |/ __ \\ /     \\ /  _ \\ 
/ /_/ \\  ___/|  Y Y  (  <_> )
\\____ |\\___  >__|_|  /\\____/ 
     \\/    \\/      \\/        
================================
'''
	window = Tk()
	GUI_HOME = Main_GUI(window)
	GUI_HOME.set_window_ui()
	window.mainloop()

效果图:

3.用例说明(文件路径版)

该代码仅用于选择文件,并返回绝对路径

from tkinter import *
from tkinter import filedialog
import tkinter.messagebox

class Main_GUI():
	def __init__(self,window):
		self.window = window

	def set_window_ui(self):
		self.window.title('file demo 小工具 by alee')
		self.window.geometry('470x80+700+350')
		self.window.attributes('-alpha',0.9)
		self.text_label_fill0 = Label(self.window, text='', width=1).grid(row=0, column=0)
		self.text_label1 = Label(self.window, text='filepath:', height=3).grid(row=0, column=1, sticky=W+E)
		self.filepath_entry = Entry(self.window, width=30)
		self.filepath_entry.grid(row=0, column=2)
		self.text_label_fill0 = Label(self.window, text='', width=1).grid(row=0, column=3)
		self.check_button1 = Button(self.window, text='open', command=self.OpenFile).grid(row=0, column=4)

	def OpenFile(self):
		self.file_path = filedialog.askopenfilename() # 获取本地文件路径,需要引入filedialog库
		self.filepath_entry.delete(0,END)
		self.filepath_entry.insert(END,self.file_path)

if __name__ == '__main__':
	window = Tk()
	GUI_HOME = Main_GUI(window)
	GUI_HOME.set_window_ui()
	window.mainloop()

效果图: