python内置界面开发模块Tkinter的简单使用

前言

不会有很多注释
python在界面开发这一块是没有什么优势的,但是当我们一些小项目需要可视化或者给别人使用的时候用python自带的模块会比较合适
但是我们不要在意太多细节,因为Tkinter还是有许多被吐槽的地方,只需坚持一个原则:能跑就行

主窗口

import tkinter as tk
window = tk.Tk()
window.title('window')
window.geometry('200x100+0+0') ##宽x高+x+y
"""
这里塞部件
"""
window.mainloop()

Button按钮

def callback():
	pass
Button = tk.Button(window, text='static text', command=callback)
Button.place(x=100, y=100, width=40, height=25)

Label标签

Label部件只用于显示文本,文本不可复制
如果文本固定不变,用不打注释的
如果文本会变,用打注释的

Label = tk.Label(window, text='static text')
Label.place(x=100, y=100, width=40, height=25)
#content = tk.StringVar() 
#Label = tk.Label(window, textvariable=content)
#Label.place(x=100, y=100, width=40, height=25)

知识点一:文本可变用textvariable = tk.StringVar()
赋值用下面语句

content.set("new content")
#content.get()

Text编辑框

Text不可用textvariable=content,也不可用Text.get()直接获取值

Text = tk.Text(window)
Text.place(x=100, y=100, width=40, height=25)

知识点二:Text不可用textvariable=content来改变文本
改变文本的方法如下

#Text.delete(0.0, tk.END)
Text.insert("insert", "追加的文本")
#Text.get(0.0, tk.END)

Entry输入框

Entry部件和Text有一些区别:文本要换行用Text,输入密码用Entry
获取文本有两种方法

Entry = tk.Entry(window)
Entry.place(x=100, y=100, width=40, height=25)

知识点三:有换行、复制需求要用Text
获取值、赋值用下面语句

content = tk.StringVar()
Entry = tk.Entry(window,textvariable=content)
Entry.place(x=100, y=100, width=40, height=25)
content.get()

#Entry.get()

ListBox列表

如果要显示很多列数据而且要便于复制可以用Text、也可以用Listbox
区别是Listbox你点击会有选中一行,Text会选中一个单词,而且Text可编辑
Text的这些特性不代表它功能弱于Listbox,如果你要一行显示两列数据,那么使用Text会更方便复制

contents = tk.StringVar()
contents.set(("第一行","第二行","第三行"))
ListBox = tk.Listbox(window, listvariable=contents)  #将var2的值赋给Listbox
ListBox.place(x=100, y=100, width=40, height=25)

ListBox可以很方便地进行增删
知识点四:对ListBox项目进行修改

ListBox.insert('end',"最后一行")
ListBox.delete(2)

RadioButton单选框

所有地单选框只能同时选中一个

content = tk.StringVar()
Radiobutton1 = tk.Radiobutton(window, text='单选框1', variable=content, value='1')
Radiobutton1.place(x=100, y=100, width=40, height=25)

Radiobutton2 = tk.Radiobutton(window, text='单选框2', variable=content, value='2')
Radiobutton2.place(x=100, y=100, width=40, height=25)

CheckButton多项框

content = tk.IntVar()
CheckButton = tk.Checkbutton(window, text='复选框1', variable=content, onvalue=1, offvalue=0)
CheckButton.place(x=100, y=100, width=40, height=25)

知识点五: tk变量不全是StringVar,还有IntVar(),根据需要使用

MessageBox

如果要弹窗提示用户信息,使用MessageBox,唯一缺点就是弹窗的内容不可以复制

tkinter.messagebox.showinfo('提示',"30 error 25 warning ")

总结

Tkinter基本组件就这几个,多的不要学了,高级功能也不要碰(比如快捷键,不太好使)
下面总结一下上面组件的用处和缺点

组件 用处 获取组件内容 缺陷
MessageBox 提示信息,特别是错误信息 ---------- 信息内文字不可复制
Button 触发事件 ---------- --------
Label 显示不可复制的文字 ---------- 不可复制
Text 编辑文字、显示文字 Text.get(0.0, tk.END) 不可用变量替代文本
Entry 编辑文字、显示文字 Entry.get() 或 content.get()
ListBox 显示列表信息 contents.get() ----
RadioBottun 获取用户选择 content.get() ----
CheckButton 获取用户选择 content.get() ----

小提示

很多组件建立的时候都可以加command=callback
但是基本上只有Button和BadioButton需要,而且回调函数没有()

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