十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
思路是对的,只不过你没调用更新函数,见下面标注。
为轵城等地区用户提供了全套网页设计制作服务,及轵城网站建设行业解决方案。主营业务为网站设计、成都网站建设、轵城网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
# -*- coding: gb2312 -*-
import time
from Tkinter import *
def run():
while True:
txt.insert(END,'...')
txt.update()#我指的是加这句代码。
#下面两句,回复显示后对不齐,请注意,与上面两句平行
print '...'#这句没什么用,输出到控制台了,和Tk没关系
time.sleep(10)
root = Tk()
txt = Text(root)
txt.pack()
Button(root,text='Run',command = run).pack()
root.mainloop()
另外,介意用类封装一下更好管理。
代码见下:
# -*- coding: gb2312 -*-
import time
from Tkinter import *
class Display:
def __init__(self):
self.root = Tk()
self.text = Text(self.root)
self.text.pack()
self.butt = Button(self.root,text='Run',command = self.run)
self.butt.pack()
def run(self):
while True:
self.text.insert(END, '...')
self.root.update()#更新以后才能看到变化
time.sleep(1)#这里为了快点看到效果,改为了1S输出一次
if __name__ == '__main__':
D = Display()
mainloop()
以上代码均已在python2.5下运行。
输入框是 Entry,应用程序要取得用户的信息,输入框是必不可少的。
输入框比较重要的一个函数:
get:返回值即输入框的内容
比如e是一个输入框,e['show']='*'就变成了密码框
小例子:用户登陆窗口,成功失败均有返回
示例代码
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
from Tkinter import *
root = Tk()
#按扭调用的函数,
def reg():
User = e_user.get()
Pwd = e_pwd.get()
len_user = len(User)
len_pwd = len(Pwd)
if User=='111' and Pwd == '222':
l_msg['text']='登陆成功'
else:
l_msg['text']='用户名或密码错误'
e_user.delete(0,len_user)
e_pwd.delete(0,len_pwd)
#第一行,用户名标签及输入框
l_user =Label(root,text='用户名:')
l_user.grid(row=0,sticky=W)
e_user =Entry(root)
e_user.grid(row=0,column=1,sticky=E)
#第二行,密码标签及输入框
l_pwd = Label(root,text='密码:')
l_pwd.grid(row=1,sticky=W)
e_pwd = Entry(root)
e_pwd['show']='*'
e_pwd.grid(row=1,column=1,sticky=E)
#第三行登陆按扭,command绑定事件
b_login = Button(root,text='登陆',command=reg)
b_login.grid(row=2,column=1,sticky=E)
#登陆是否成功提示
l_msg = Label(root,text='')
l_msg.grid(row=3)
root.mainloop()
效果图:
成功登陆 登陆失败
再来一个小例子吧:
功能,两个复选框,被选中时下面已选中标签中有值,取消时,已选中标签的消息没有了
效果图:
示例代码:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
from Tkinter import *
#定义一个root主窗口
root = Tk()
#定义两个变量,用于判断复选框状态
box_1 = False
box_2 = False
#列表,用于存放选中内容
List_Content = []
def click_c1():
global box_1
#复选框被选中,box_1置为True
box_1 = not box_1
if box_1:
List_Content.append('Windows')
l['text']=List_Content
else:
List_Content.remove('Windows')
l['text']=List_Content
def click_c2():
global box_2
box_2 = not box_2
if box_2:
List_Content.append('Linux')
l['text']=List_Content
else:
List_Content.remove('Linux')
l['text']=List_Content
#定义两个复选框,并绑定相关事件
ck1 = Checkbutton(root,text='Windows',command=click_c1)
ck1.grid(row=0,column=1)
ck2 = Checkbutton(root,text='Linux',command=click_c2)
ck2.grid(row=1,column=1)
l_com = Label(root,text='已选中:')
l_com.grid(row=2,column=0)
l = Label(root,text='')
l.grid(row=2,column=1)
root.mainloop()
1、首先打开python,输入:
#coding:utf-8
importurllib,urllib2
importTkinter#导入TKinter模块
2、然后输入:
ytm=Tkinter.Tk()#创建Tk对象
ytm.title("login")#设置窗口标题
ytm.geometry("300x300")#设置窗口尺寸
3、然后输入:
l1=Tkinter.Label(ytm,text="用户名")#标签
l1.pack()#指定包管理器放置组件
user_text=Tkinter.Entry()#创建文本框
4、然后输入:
user_text.pack()
defgetuser():
user=user_text.get()#获取文本框内容
printuserTkinter.Button(ytm,text="登录",command=getuser).pack()#command绑定获取文本框内容方法
ytm.mainloop()#进入主循环,就完成了。
下边这一系列方法用于与窗口管理器进行交互。他们可以被 Tk(根窗口)进行调用,同样也适用于 Toplevel(顶级窗口)。
注:并非所有操作系统均完全支持下方所有方法的实现。
aspect(minNumer=None, minDenom=None, maxNumer=None, maxDenom=None)
-- 控制该窗口的宽高比(width:height)
-- 宽高比限制在:minNumer / minDenom ~ maxNumer / maxDenom
-- 如果忽略参数,则返回一个 4 元组表示当前的限制(如果有的话)
attributes(*args)
-- 设置和获取窗口属性
-- 如果你只给出选项名,将返回当前窗口该选项的值
-- 注意:以下选项不支持关键字参数,你需要在选项前添加横杠(-)并用字符串的方式表示,用逗号(,)隔开选项和值。
-- 例如你希望设置窗口的透明度为 50%,你应该使用 attribute("-alpha", 0.5) 代替 attribute(alpha=0.5)
-- 下方表格列举了 args 可以使用各个选项的具体含义及用法:
选项 含义
alpha 1.(Windows,Mac)控制窗口的透明度
colormapwindows(*wlist)
-- 设置和获取 WM_COLORMAP_WINDOWS 属性
-- 该属性仅支持 X 窗口系统的窗口管理器,其他系统均忽略
command(value=None)
-- 设置和获取 WM_COMMAND 属性
-- 该属性仅支持 X 窗口系统的窗口管理器,其他系统均忽略
deiconify()
-- 显示窗口
-- 默认情况下新创建的窗口都会显示在屏幕上,但使用 iconify() 或 withdraw() 方法可以在屏幕上移除窗口
focusmodel(model=None)
-- 设置和获取焦点模式
frame()
-- 返回一个字符串表示当前系统特征
-- 对于类 Unix 系统,返回值是 X 窗口标识符
-- 对于 Windows 系统,返回值是 HWND 强制转换为长整形的结果
geometry(geometry=None)
-- 设置和获取窗口的尺寸
-- geometry 参数的格式为:"%dx%d%+d%+d" % (width, height, xoffset, yoffset)
grid(baseWidth=None, baseHeight=None, widthInc=None, heightInc=None)
-- 通知窗口管理器该窗口将以网格的形式重新调整尺寸
-- baseWidth 和 baseHeight 指定 Tk_GeometryRequest 要求的网格单元数
-- widthInc 和 heightInc 指定网格单元的宽度和高度(像素)
group(window=None)
-- 将窗口添加到窗口群中
-- window 参数指定控制窗口群的主窗口
-- 如果忽略该参数,将返回当前窗口群的主窗口
iconbitmap(bitmap=None, default=None)
-- 设置和获取窗口的图标
-- 例如 root.iconbitmap(bitmap="Python.ico")
-- default 参数可以用于指定由该窗口创建的子窗口的默认图标
iconify()
-- 将窗口图标化(最小化)
-- 需要重新显示窗口,使用 deiconify() 方法
-- 该方法会使得 state() 返回 "iconic"
iconmask(bitmap=None)
-- 设置和获取位图掩码
iconname(newName=None)
-- 设置和获取当窗口图标化(最小化)时的图标名字
iconposition(x=None, y=None)
-- 设置和获取当窗口图标化(最小化)时的图标位置
iconwindow(pathName=None)
-- 设置和获取当窗口图标化(最小化)时的组件窗口
-- 该方法会使得 state() 返回 "icon"
maxsize(width=None, height=None)
-- 设置和获取该窗口的最大尺寸
minsize(width=None, height=None)
-- 设置和获取该窗口的最小尺寸
overrideredirect(boolean=None)
-- 如果参数为 True,该窗口忽略所有的小部件(也就是说该窗口将没有传统的标题栏、边框等部件)
positionfrom(who=None)
-- 指定窗口位置由“谁”决定
-- 如果 who 参数是 "user",窗口位置由用户决定
-- 如果 who 参数是 "program",窗口位置由系统决定
protocol(name=None, func=None)
-- 将回调函数 func 与相应的规则 name 绑定
-- name 参数可以是 "WM_DELETE_WINDOW":窗口被关闭的时候
-- name 参数可以是 "WM_SAVE_YOURSELF":窗口被保存的时候
-- name 参数可以是 "WM_TAKE_FOCUS":窗口获得焦点的时候
resizable(width=None, height=None)
-- 指定是否可以改变该窗口的尺寸
-- width 为 True 说明允许调整窗口的水平尺寸
-- height 为 True 说明允许调整窗口的垂直尺寸
sizefrom(who=None)
-- 指定窗口尺寸由“谁”决定
-- 如果 who 参数是 "user",窗口位置由用户决定
-- 如果 who 参数是 "program",窗口位置由系统决定
state(newstate=None)
-- 设置和获得当前窗口的状态
-- newstate 的值可以是 "normal","iconic"(见 iconify),"withdrawn"(见 withdraw),"icon"(见 iconwindow)和 "zoomed"(放大,Windows 特有)
title(string=None)
-- 设置窗口的标题
transient(master=None)
-- 指定为 master 的临时窗口
withdraw()
-- 将窗口从屏幕上移除(并没有销毁)
-- 需要重新显示窗口,使用 deiconify() 方法
-- 该方法会使得 state() 返回 "withdrawn"
wm_aspect(minNumer=None, minDenom=None, maxNumer=None, maxDenom=None)
-- 见上方 aspect()
wm_attributes(*args)
-- 见上方 attributes()
wm_client(name=None)
-- 见上方 client()
wm_colormapwindows(*wlist)
-- 见上方 colormapwindows()
wm_command(value=None)
-- 见上方 command()
wm_deiconify()
-- 见上方 deiconify()
wm_focusmodel(model=None)
-- 见上方 focusmodel()
wm_frame()
-- 见上方 frame()
wm_geometry(geometry=None)
-- 见上方 geometry()
wm_grid(baseWidth=None, baseHeight=None, widthInc=None, heightInc=None)
-- 见上方 grid()
wm_group(window=None)
-- 见上方 group()
wm_iconbitmap(bitmap=None, default=None)
-- 见上方 iconbitmap()
wm_iconify()
-- 见上方 iconify()
wm_iconmask(bitmap=None)
-- 见上方 iconmask()
wm_iconname(newName=None)
-- 见上方 iconname()
wm_iconposition(x=None, y=None)
-- 见上方 iconposition()
wm_iconwindow(pathName=None)
-- 见上方 iconwindow()
wm_maxsize(width=None, height=None)
-- 见上方 maxsize()
wm_minsize(width=None, height=None)
-- 见上方 minsize()
wm_overrideredirect(boolean=None)
-- 见上方 overrideredirect()
wm_positionfrom(who=None)
-- 见上方 positionfrom()
wm_protocol(name=None, func=None)
-- 见上方 protocol()
wm_resizable(width=None, height=None)
-- 见上方 resizable()
wm_sizefrom(who=None)
-- 见上方 sizefrom()
wm_state(newstate=None)
-- 见上方 state()
wm_title(string=None)
-- 见上方 title()
wm_transient(master=None)
-- 见上方 transient()
wm_withdraw()
-- 见上方 withdraw()
这个要看你的代码上下文,也就是具体的语境。
1、你可以用一个全局的变量,get到的内容写进这变量。外部函数直接访问这个变量即可。
2、也可以用一个全局的变量来接收你的文本框对象。那么就可以再外边函数,通过这个引用,来调用文本框的get方法