鱼C论坛

 找回密码
 立即注册
查看: 1538|回复: 9

[已解决]提问tkinter的StringVar相关问题

[复制链接]
发表于 2020-3-13 17:10:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想请问一下大家为什么我这个程序运行会显示AttributeError: Module "tkinter" has no attribute"Stringvar", 按理来说这个StringVar不就是tkinter模块下的属性吗?
而且我就是这个程序有问题,另外的用到stringvar的程序却没有这样报错。
下面的代码第一个是有问题的,第二个是没有问题的。
import tkinter as tk
window = tk.Tk()
window.geometry("400x400")

var1 = tk.StringVar()
l = tk.Label(window, textvariable = var1, bg = "yellow")
l.pack()

def click():
    value = lb.get(lb.curselection())
    var1.set(value)
b = tk.Button(window, text = "print", command = click)
b.pack()

var2 = tk.Stringvar()
var2.set(11,22,33,44)
lb = tk.Listbox(window, listvariable = var2 )
items = (a,b,c,d)
for item in items:
    lb.insert("end", item)
lb.pack()
window.mainloop()
import tkinter as tk

#创建并设置主窗口
window = tk.Tk()
window.title("my window")
window.geometry("500x300")

#创建并设置label
var = tk.StringVar()

l = tk.Label(window, textvariable = var, bg = "red")
l.pack()

#创建button并使用
flag = False
def hit():
    global flag
    if not flag:
        flag = True
        var.set("you hit me")
        
    else:
        flag = False
        
        var.set("")
    
b = tk.Button(window, text = "hit me", command = hit)
b.pack()
#主窗口循环
window.mainloop()
最佳答案
2020-3-13 21:20:45
wanton 发表于 2020-3-13 21:18
所以这就是我不明白的地方,我都是把我对的程序里面的StringVar复制到那个错的程序里面,然后就报这个错

你写成了 Stringvar,看第 15 行:
import tkinter as tk
window = tk.Tk()
window.geometry("400x400")

var1 = tk.StringVar()
l = tk.Label(window, textvariable = var1, bg = "yellow")
l.pack()

def click():
    value = lb.get(lb.curselection())
    var1.set(value)
b = tk.Button(window, text = "print", command = click)
b.pack()

var2 = tk.StringVar()   # 修改
var2.set(11,22,33,44)
lb = tk.Listbox(window, listvariable = var2 )
items = (a,b,c,d)
for item in items:
    lb.insert("end", item)
lb.pack()
window.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-13 17:17:31 | 显示全部楼层
StringVar 不是 Stringvar
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-13 18:14:14 | 显示全部楼层
一个账号 发表于 2020-3-13 17:17
是 StringVar 不是 Stringvar

正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-13 21:09:32 | 显示全部楼层
一个账号 发表于 2020-3-13 17:17
是 StringVar 不是 Stringvar

可是我写的就是StringVar啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-13 21:10:34 | 显示全部楼层
wanton 发表于 2020-3-13 21:09
可是我写的就是StringVar啊

那你的报错信息为什么是 Stringvar
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-13 21:18:55 | 显示全部楼层
一个账号 发表于 2020-3-13 21:10
那你的报错信息为什么是 Stringvar

所以这就是我不明白的地方,我都是把我对的程序里面的StringVar复制到那个错的程序里面,然后就报这个错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-13 21:20:45 | 显示全部楼层    本楼为最佳答案   
wanton 发表于 2020-3-13 21:18
所以这就是我不明白的地方,我都是把我对的程序里面的StringVar复制到那个错的程序里面,然后就报这个错

你写成了 Stringvar,看第 15 行:
import tkinter as tk
window = tk.Tk()
window.geometry("400x400")

var1 = tk.StringVar()
l = tk.Label(window, textvariable = var1, bg = "yellow")
l.pack()

def click():
    value = lb.get(lb.curselection())
    var1.set(value)
b = tk.Button(window, text = "print", command = click)
b.pack()

var2 = tk.StringVar()   # 修改
var2.set(11,22,33,44)
lb = tk.Listbox(window, listvariable = var2 )
items = (a,b,c,d)
for item in items:
    lb.insert("end", item)
lb.pack()
window.mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-13 21:21:52 | 显示全部楼层
一个账号 发表于 2020-3-13 21:20
你写成了 Stringvar,看第 15 行:

我晕,我看到了,我还在纠结第一个StringVar为啥有问题,原来是第二个,谢谢啦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-12 00:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表