TK-StringVar
1. StringVar属于Tkinter下的对象。
2、StringVar的作用
在使用界面编程的时候,有些时候是需要跟踪变量的值的变化,以保证值的变更随时可以显示在界面上。由于python无法做到这一点,所以使用了tcl的相应的对象,也就是StringVar、BooleanVar、DoubleVar、IntVar所需要起到的作用
下面是一个例子,点击button之后,listbox的可选项变成4项,多出一个java选项:
def changeItems():
print cnames.get()
tnames = 'python','TCL','ruby','java'
cnames.set(tnames)
root = Tkinter.Tk()
root.geometry('+400+200')
root.minsize(400,200)
root.title("test")
tnames = 'python','TCL','ruby'
cnames = StringVar()
cnames.set(tnames)
l = Listbox(root, listvariable = cnames,height = 10).grid()
ttk.Button(root,text = "submit",command = changeItems).grid()
root.mainloop()
3.这个例子中,给StringVar变量的赋值使用的是Tuples类型,但是这种类型是不能进行修改的,这会带来了一个问题,就是变量如何被修改呢?
于是将程序进行了修改,初步赋值使用的是一个list,结果出现了。
tnames = ['python','TCL','ruby']
cnames = StringVar()
cnames.set(tnames)
l = Listbox(root, listvariable = cnames,height = 10).grid()
这段程序执行的结果,listbox中显示的list的第一个是['python', 而第二个是'TCL', 第三个是'ruby']
这个事情诡异的是,确实是分解成了三段,但是三段包含了list定义所需要的[],字符串的'',以及分割的, !
于是,将程序进行了修改,去掉了字符定义的[],见下面:
tnames = 'python','TCL','ruby'
cnames = StringVar()
cnames.set(tnames)
l = Listbox(root, listvariable = cnames,height = 10).grid()
结果,程序显示正确
到底这个事情是怎么弄的呢?将代码修改一下,打印几个东西
def changeItems():
print cnames.get()
tnames = 'python','TCL','ruby','java'
cnames.set(tnames)
root = Tkinter.Tk()
root.geometry('+400+200')
root.minsize(400,200)
root.title("test")
tnames = ['python','TCL','ruby']
print tnames.__class__
cnames = StringVar()
cnames.set(tnames)
l = Listbox(root, listvariable = cnames,height = 10).grid()
ttk.Button(root,text = "submit",command = changeItems).grid()
root.mainloop()
执行上面的代码,从控制台中输出了如下的内容:
<type 'list'>
("['python',", "'TCL',", "'ruby']")
这个说明什么呢?StringVar类型调用set函数时,先将变量转变成了tuples类型的数据。所以,实际上最好是调用set函数之前就直接使用Tuples类型的数据,这样或许更好点。
那么怎么实现函数变量的修改呢?其实很简单了,定义一个list,然后将list转换成tuples即可。修改后的函数如下:
def changeItems():
tnames.append('java')
cnames.set(tuple(tnames))
root = Tkinter.Tk()
root.geometry('+400+200')
root.minsize(400,200)
root.title("test")
tnames = ['python','TCL','ruby']
cnames = StringVar()
cnames.set(tuple(tnames))
l = Listbox(root, listvariable = cnames,height = 10).grid()
ttk.Button(root,text = "submit",command = changeItems).grid()
root.mainloop()
TK-StringVar相关推荐
- 对于tk.StringVar()理解
StringVar是Tk库内部定义的字符串变量类型,在这里用于管理部件上面的字符: 这个可以跟踪变量值的变化,普通的python变量不能即时地显示在屏幕上面. StringVar并不是python内建 ...
- python3 gui tk代码_【基础】学习笔记30-python3 tkinter GUI编程-实操12
import tkinter as tk win = tk.Tk() menu = tk.Menu(win) # 创建顶层菜单 filemenu = tk.Menu(menu, tearoff=0) ...
- python tk文本框_python图形界面tk 1.5 文本框(Text box | Entry)
在tkinter中,文本框被称为Entry #!/usr/bin/env python # -*- coding: utf-8 -*- import tkinter as tk from tkinte ...
- python:tkinter —— Tcl/Tk 的 Python 接口
python:tkinter -- Tcl/Tk 的 Python 接口 架构 Tkinter 模块 Tkinter 拾遗 Hello World 程序 重要的 Tk 概念 了解 Tkinter 如何 ...
- python中stringvar的用法_Python tkinter.StringVar方法代码示例
本文整理汇总了Python中tkinter.StringVar方法的典型用法代码示例.如果您正苦于以下问题:Python tkinter.StringVar方法的具体用法?Python tkinter ...
- tk基础--标签、按钮
本节内容: 明白标签.按钮的使用 实现简单的点击界面 Tkinter 简称tk,在python中属于内置模块,不需要进行安装,可直接引用,import tkinter 一. 首先我们做一个如图所示的图 ...
- python中tk窗口刷新_用按钮刷新tk窗口
这是我让这个脚本工作的唯一方法,否则我会在"self"未定义时出错.有没有其他方法可以在点击刷新时添加函数?在 `class MAIN(object): def __init__( ...
- python tk教程_【转】【Python】Tkinter教程
什么是Tkinter? Tkinter 是 Python 的标准 GUI 库.Python 使用 Tkinter 可以快速的创建 GUI 应用程序. 由于 Tkinter 是内置到 python 的安 ...
- python tk模块 小作业
import tkinter as tk import tkinter.messagebox window=tk.Tk() window.title('简单控制系统') window.geometry ...
- python Tk 登录
我们首先要引入tkinter库和tkinter库中的messagebox import tkinter as tk import tkinter.messagebox import pickle 接下 ...
最新文章
- 2014/08/13 – Backbonejs
- 什么是HTML5?HTML5发展前景如何?
- 林海峰老师python课件密码
- 我的C语言可变参数的实现
- Java智能卡 技术_java智能卡APDU学习笔记
- 【算法分析与设计】经典排序算法实现
- SAP License:BCS进阶第三篇-BCS合并过程(一)
- mysql不定参数函数_可变参数函数(一)
- Mybatis 中经典的 9 种设计模式!面试可以吹牛了!
- 机器学习之BP神经网络算法实现图像分类
- python如何截长图_python 截长图、H5页面截长图
- U盘无法格式化的原因及解决方法
- npm install 提示 path .../node_modules/node-sass command failed
- 如何通过热点打造爆款笔记?6个好写易爆的热点类型
- 项目总结“遇见江小丽”
- 【BZOJ2069】ZAW(POI2004)-最短路+二进制分组
- 刻意学习:持续行动让你人生逆袭
- TSN网络中的Qbu和IEEE 802.3br帧抢占是如何工作的?
- 微雪CM4-IO-WIRELESS-BASE 配置
- 2021年英语六级作文(附翻译)
热门文章
- SAP MM模块常用表总结
- 第4章 JavaScript表达式与运算符
- 滑动门套滑动门css,JS+CSS实现带小三角指引的滑动门效果
- 记一次 .NET 某智能交通后台服务 CPU爆高分析
- htc系统Android 7.1,这款HTC太强大,被誉为刷机之王,一路升到安卓7.1
- 从头开始,彻底理解服务端渲染原理
- php artisan怎么用,php artisan常用方法
- java个人博客系统代码下载_java个人博客系统代码
- TheFourthJavaText
- 当下的事,就是最重要的事,安下心,用良知去处理