上次学习了基本窗口的创建、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()

运行程序

Enum python 根据name获取 python获取entry内容_学习

按【开始】

Enum python 根据name获取 python获取entry内容_控件_02

按【清空】

 

Enum python 根据name获取 python获取entry内容_字符串_03

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

用于显示你应用程序的消息框。