上次学习了基本窗口的创建、Labal控件、Entry控件、Button控件的创建和显示。
其实我的目的不止要显示,还要这些控件之间产生联系。比如:
1,Entry控件中写的内容可以一键消除
2,Entry控件中写的内容可以显示到Labal控件中
最后会介绍下Tix的控件。
查了好多资料后我只发现了一种又快又好的方法。
使用控件中的textvariable属性。
textvariable
标签显示 Tkinter 变量,StringVar。如果变量被修改,标签文本将自动更新
StringVar
StringVar是Tk库内部定义的字符串变量类型。StringVar并不是python内建的对象, 而是属于Tkinter下的对象。在这里用于管理控件上面的字符;这个可以跟踪变量值的变化,普通的Phtyon变量不能即时地显示在屏幕上面。
示例
#!/usr/bin/python3
from tkinter import StringVar, tix
root = tix.Tk()
root.title("py window test")
#定义StringVar
l_text = StringVar()
#初始化数据
text = "hello world! \n你好,世界"
l_text.set(text)
#button1 get实现将Entry控件写的文本显示到Laber处
def get():
text = e_00.get()
l_text.set(text)
return
#button2 myclean实现 清除Entry内容,并回复成原状
def myclearn():
text = "hello world! \n你好,世界"
l_text.set(text)
e_00.delete(0, "end")
return
#l_00 = tix.Label(root, text="hello world! \n你好,世界", font=("微软雅黑", 12))
l_00 = tix.Label(root, textvariable=l_text, font=("微软雅黑", 12))
l_00.pack(pady=10)
e_00 = tix.Entry(root, font=("微软雅黑", 12))
e_00.pack(pady=20)
b1 = tix.Button(root, text="开始", command=get)
b1.pack(pady=10, side='left')
b2 = tix.Button(root, text="清空", command=myclearn)
b2.pack(before=b1, side='left', padx=70, pady=10)
# 进入消息循环
root.mainloop()
运行程序
按【开始】
按【清空】
Tkinter 组件
Tkinter的提供各种控件,如按钮,标签和文本框,一个GUI应用程序中使用。这些控件通常被称为控件或者部件。
目前有15种Tkinter的部件。我们提出这些部件以及一个简短的介绍,在下面的表:
控件 | 描述 |
Button | 按钮控件;在程序中显示按钮。 |
Canvas | 画布控件;显示图形元素如线条或文本 |
Checkbutton | 多选框控件;用于在程序中提供多项选择框 |
Entry | 输入控件;用于显示简单的文本内容 |
Frame | 框架控件;在屏幕上显示一个矩形区域,多用来作为容器 |
Label | 标签控件;可以显示文本和位图 |
Listbox | 列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户 |
Menubutton | 菜单按钮控件,用于显示菜单项。 |
Menu | 菜单控件;显示菜单栏,下拉菜单和弹出菜单 |
Message | 消息控件;用来显示多行文本,与label比较类似 |
Radiobutton | 单选按钮控件;显示一个单选的按钮状态 |
Scale | 范围控件;显示一个数值刻度,为输出限定范围的数字区间 |
Scrollbar | 滚动条控件,当内容超过可视化区域时使用,如列表框。. |
Text | 文本控件;用于显示多行文本 |
Toplevel | 容器控件;用来提供一个单独的对话框,和Frame比较类似 |
Spinbox | 输入控件;与Entry类似,但是可以指定输入范围值 |
PanedWindow | PanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件。 |
LabelFrame | labelframe 是一个简单的容器控件。常用与复杂的窗口布局。 |
tkMessageBox | 用于显示你应用程序的消息框。 |