Tkinter - AttributeError: 'str' object has no attribute 'set'
Tkinter - AttributeError: 'str' object has no attribute 'set'
这是我创建的代码,我正在尝试 运行:
import tkinter as tk
def ok(val):
print("Value is: ", val)
def say_hi(self):
print("hi there, everyone!")
class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
master.title("Hi There")
master.geometry("400x400")
self.createWidgets(master)
def createWidgets(self, master=None):
var = str()
self.select = tk.OptionMenu(master, var, "one", "two","three", command=ok).grid(column=1, row=1)
self.QUIT = tk.Button(master, text="QUIT", fg="red", command=root.destroy).grid(column=2, row=1)
print ("HI")
root = tk.Tk()
app = Application(master=root)
app.mainloop()
但我收到以下错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
return self.func(*args)
File "C:\Python34\lib\tkinter\__init__.py", line 3308, in __call__
self.__var.set(self.__value)
AttributeError: 'str' object has no attribute 'set'
我尝试修改一些变量并使用不同的方法使菜单正常工作,但似乎无法消除错误。
知道如何修复错误吗?
使用 StringVar
而不是 str
def createWidgets(self, master=None):
var = tk.StringVar()
A python str
没有 set
方法或属性,StringVar 特定于 tkinter 以及您打算使用的内容。
这是我创建的代码,我正在尝试 运行:
import tkinter as tk
def ok(val):
print("Value is: ", val)
def say_hi(self):
print("hi there, everyone!")
class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
master.title("Hi There")
master.geometry("400x400")
self.createWidgets(master)
def createWidgets(self, master=None):
var = str()
self.select = tk.OptionMenu(master, var, "one", "two","three", command=ok).grid(column=1, row=1)
self.QUIT = tk.Button(master, text="QUIT", fg="red", command=root.destroy).grid(column=2, row=1)
print ("HI")
root = tk.Tk()
app = Application(master=root)
app.mainloop()
但我收到以下错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
return self.func(*args)
File "C:\Python34\lib\tkinter\__init__.py", line 3308, in __call__
self.__var.set(self.__value)
AttributeError: 'str' object has no attribute 'set'
我尝试修改一些变量并使用不同的方法使菜单正常工作,但似乎无法消除错误。
知道如何修复错误吗?
使用 StringVar
而不是 str
def createWidgets(self, master=None):
var = tk.StringVar()
A python str
没有 set
方法或属性,StringVar 特定于 tkinter 以及您打算使用的内容。