python传递变量tkinter
我是新的im Python,刚刚开始学习类和tkinter,所以请原谅我的代码“凌乱”。 我试图在字段nr1中输入一些字符串,单击按钮后,在控制台中打印此字符串,并存储此值供以后使用:python传递变量tkinter,python,class,variables,tkinter,python-3.5,Python,Class,Variables,Tkinter,Python 3.5,我是新的im 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,
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:“非类型”对象不可调用
如有任何帮助,将不胜感激。问题:
from tkinter import *
from tkinter.ttk import *
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):
# Get entry1 value, store it as an attribute and print to console
self.raw_input = self.v.get()
print(self.raw_input)
def initUI(self):
self.frame = Frame(self, relief=RAISED, borderwidth=0)
self.frame.pack(fill=BOTH, expand=True)
self.entry1 = Entry(self.frame, textvariable=self.v)
self.entry1.pack(side=TOP, fill=X, expand=False, padx=2, pady=2)
self.entry1.focus_set()
#self.rename_button = Button(self.frame, text="Dispaly text",
# command = self.user_input())
self.rename_button = Button(self.frame, text="Display text",
command = self.user_input)
self.rename_button.pack(side=TOP, expand=False, padx=2, pady=2)
# You can remove the triple quotes to display these widgets
"""
self.entry2 = Entry(self.frame)
self.entry2.pack(side=TOP, fill=X, expand=False, padx=2, pady=2)
self.quit_button = Button(self.frame, text="Quit", command=self.quit)
self.quit_button.pack(side=RIGHT, padx=5, pady=5)
self.ok_button = Button(self.frame, text="OK")
self.ok_button.pack(side=RIGHT, padx=5, pady=5)
"""
self.pack(fill=BOTH, expand=True)
def main():
root = Tk()
app = AD(root)
root.mainloop()
您的GUI:
建议:
- 一定要记得把自己放进去。在你的小部件前面李>
- 一次测试一个小部件以帮助调试代码
command=self.user\u input()
remove parantises。raw\u input
为None
,您试图在a=self.
行中使用parantises调用它。不知道您在那里想要实现什么。您使用的是python 2还是python 3?您可以调用raw\u input()
,它是python 2,但是您可以导入tkinter
,而不是tkinter
,这意味着python 3。然后,您标记了问题python-3.5Python 3.5-是否存在对原始输入()的替换?。编辑:好,只需input()
。Stll不知道这应该是什么样子这就是你如何使用Entry&Button从用户那里获取输入,然后按你喜欢的方式使用它。这正是我想要做的-非常感谢。我不确定我是否正确理解了所有内容(函数名上的()部分)。@Fangir欢迎。在空闲命令行上键入函数名时,python将创建一个函数对象。但是,当您键入函数名后跟()且名称和()之间没有空格时,您将看到python运行/执行您的函数(就像让函数对象完成它的工作一样)。我的2美分价值。。。