【发布时间】:2017-05-26 04:06:22
【问题描述】:
我是 Python 新手,刚开始学习类和 tkinter,所以请原谅我“凌乱”的代码。 我正在尝试在字段 nr1 中输入一些字符串,单击按钮后,在控制台中打印此字符串并存储此值以供以后使用:
from tkinter import Tk, BOTH, RIGHT, RAISED, BOTTOM, TOP, X, StringVar
from tkinter.ttk import Frame, Button, Entry
class AD(Frame):
def __init__(self, parent):
Frame.__init__(self, parent, v=None, raw_input=None)
self.parent = parent
self.parent.geometry("250x150+300+300")
self.parent.title("Trolollo")
self.parent.resizable(False, False)
self.inp = None
self.v = StringVar()
self.raw_input = None
self.initUI()
def user_input(self):
global inp
a = self.raw_input(self.v.get())
inp = a
return inp
def initUI(self):
self.pack(fill=BOTH, expand=True)
frame = Frame(self, relief=RAISED, borderwidth=0)
frame.pack(fill=BOTH, expand=True)
self.entry1 = Entry(frame, textvariable=self.v)
self.entry1.pack(side=TOP, fill=X, expand=False, padx=2, pady=2)
self.entry1.focus_set()
rename_button = Button(frame, text="Dispaly text", command = self.user_input())
rename_button.pack(side=TOP, expand=False, padx=2, pady=2)
entry2 = Entry(frame)
entry2.pack(side=TOP, fill=X, expand=False, padx=2, pady=2)
quit_button = Button(self, text="Quit", command=self.quit)
quit_button.pack(side=RIGHT, padx=5, pady=5)
ok_button = Button(self, text="OK")
ok_button.pack(side=RIGHT, padx=5, pady=5)
def main():
root = Tk()
app = AD(root)
root.mainloop()
if __name__ == '__main__':
main()
执行代码后,我得到: TypeError: 'NoneType' 对象不可调用
如有任何帮助,我将不胜感激
【问题讨论】:
-
简而言之,
command = self.user_input()去掉括号。 -
raw_input是None并且您正试图通过在a=self.行中使用括号来调用它。不知道你想在那里实现什么。 -
你用的是python 2还是3?你调用
raw_input(),这是python 2,但你导入tkinter,而不是Tkinter,这意味着python 3。然后你标记了问题python-3.5 -
Python 3.5 -
raw_input()有什么替代品吗?编辑:好的,只需input()。仍然无法弄清楚这应该是什么样子 -
Using the variable from entry/button in another function in Tkinter 这是您使用 Entry&Button 从用户那里获取输入并随心所欲使用的方式。
标签: python class variables tkinter python-3.5