不会有很多注释
python在界面开发这一块是没有什么优势的,但是当我们一些小项目需要可视化或者给别人使用的时候用python自带的模块会比较合适
但是我们不要在意太多细节,因为Tkinter还是有许多被吐槽的地方,只需坚持一个原则:能跑就行
import tkinter as tk
window = tk.Tk()
window.title('window')
window.geometry('200x100+0+0') ##宽x高+x+y
"""
这里塞部件
"""
window.mainloop()
def callback():
pass
Button = tk.Button(window, text='static text', command=callback)
Button.place(x=100, y=100, width=40, height=25)
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不可用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部件和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()
如果要
显示
很多列数据而且要便于复制
可以用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)
所有地单选框只能同时选中一个
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)
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,唯一缺点就是弹窗的内容不可以复制
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需要,而且回调函数没有()