学习python的意义在于python提供很多数据分析的包,所以如果不是为了搬砖,那么python就是最好的选择。但是学了那么多总归要给别人展示吧。所以图形界面开发是一个必要的技能。这里不讨论其他的选项,就是为了学python。
Tkinter是python自带的一款GUI组件,所以相对于其他的各种组件的安装成本来说,学习Tkinter都将会少很多障碍,当然如果python都比维护自己的Tkinter那么我觉得python就不是python了,所以说Tkinter比较具有长远意义。当然学其他的也很好,可以扩展眼界。
和java的awt一样,我们发现tkinter和awt差别不大,主要是使用的姿势要变一下。以下是tkinter提供的组件,基本和java的awt没啥差别。
1.Label组件学习
代码语言:javascript复制import tkinter as tk
# 拿到总窗口
window=tk.Tk()
#创建一个字符串
wordTest=tk.StringVar()
wordTest.set('测试label')
# 设置标题
window.title('Tkiner study')
# window.geometry('500x300')
# 设置窗口大小,长和
window.geometry('1200x500')
# 设置lable的名称,背景颜色,字体,宽长,
lableOne=tk.Label(window,textvariable=wordTest,bg='red',font=('Arial',12),width=10,height=2)
# 放置lable
lableOne.pack()
# 显示窗口
window.mainloop()
2.Button组件学习
代码语言:javascript复制import tkinter as tk
# 拿到总窗口
window=tk.Tk()
#定义一个字符串
wordTest=tk.StringVar()
#用于设置按钮的切换,走不同的逻辑
hind=True
def testButton():
print("点击了")
global hind
if hind==False:
print("1")
hind=True
wordTest.set('tij')
else:
print("2")
wordTest.set('please click me')
hind=False
# 设置标题
window.title('tkinter study')
# window.geometry('500x300')
# 设置窗口大小
window.geometry('888x500')
# 设置lable的名称,背景颜色,字体,宽长,
lableOne=tk.Label(window,textvariable=wordTest,bg='red',font=('Arial',12),width=10,height=2)
# 创建一个按钮,并设置一个动作函数
buttonOne=tk.Button(window,text='button',command=testButton)
# 放置lable
lableOne.pack()
# 放置按钮
buttonOne.pack()
# 显示窗口
window.mainloop()
3.Entry组件学习
entry是单行文本框,常用于账户或密码等长度不大的输入。
代码语言:javascript复制import tkinter as tk
window=tk.Tk()
# 设置窗口大小
window.geometry('300x200')
# 获取一个输入框,展示的时候显示&
entry1=tk.Entry(window,show='&',font=('Arial', 14))
# 获取一个输入框,展示的时候采用明文
entry2=tk.Entry(window,show=None,font=('Arial', 14))
entry1.pack()
entry2.pack()
window.mainloop()
4.Text多行文本框学习
代码语言:javascript复制import tkinter as tk
def insert_action():
#获取输入框中的内容
var=insert.get()
print(var)
text.insert('insert',var)
def insert_end_action():
var=insert.get()
print(var)
text.insert('end',var)
window=tk.Tk()
window.geometry('500x300')
#输入一个输入框
insert=tk.Entry(window,show=None)
insert.pack()
#定义一个多行文本框
text=tk.Text(window,height=5)
text.pack()
#向文本框的光标所在位置插入
button=tk.Button(window,text='insert',command=insert_action)
#设置向文本框尾部插入
buttonEnd=tk.Button(window,text='end',command=insert_end_action)
button.pack()
buttonEnd.pack()
window.mainloop()
5.ListBox选择框学习
代码语言:javascript复制import tkinter as tk
window=tk.Tk()
window.geometry('500x500')
window.title('test list box')
showText=tk.StringVar()
labelName=tk.Label(window,bg='red',width=30,textvariable=showText)
labelName.pack()
#单选双击事件
def listenerOne(event):
var=listBoxOne.get(listBoxOne.curselection())
print(var)
showText.set(var)
#多选情况的处理函数
def multiSelect():
value=''
for item in listBoxTwo.curselection():
var=listBoxTwo.get(item)
value =var
showText.set(value)
#单选模式
listBoxOne=tk.Listbox(window)
#多选模式
listBoxTwo=tk.Listbox(window,selectmode=tk.EXTENDED)
#绑定双击事件
listBoxOne.bind('<Double-Button-1>',listenerOne)
lanaguage=['java','python','c','c ','js']
for item in lanaguage:
listBoxOne.insert('end',item)
listBoxTwo.insert('end',item)
listBoxOne.pack()
listBoxTwo.pack()
#多选情况下的按钮
buttonOne=tk.Button(window,text='extended button',command=multiSelect)
buttonOne.pack()
window.mainloop()
6.Radiobutton单选按钮学习
代码语言:javascript复制import tkinter as tk
window=tk.Tk()
window.geometry('500x300')
showText=tk.StringVar()
var=tk.StringVar()
labelOne=tk.Label(window,textvariable=showText,bg='red',width=50)
labelOne.pack()
def show():
showText.set(var.get())
#定义几个单选框
radio1=tk.Radiobutton(window,text='java',variable=var,value='1',command=show)
radio2=tk.Radiobutton(window,text='python',variable=var,value='2',command=show)
radio3=tk.Radiobutton(window,text='c',variable=var,value='3',command=show)
radio1.pack()
radio2.pack()
radio3.pack()
window.mainloop()