Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter:使用按钮稳定对象_Python_Python 3.x_Tkinter - Fatal编程技术网

Python Tkinter:使用按钮稳定对象

Python Tkinter:使用按钮稳定对象,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我正在玩弄Python 3.3中的tkinter,想知道如何使用/创建带有按钮的对象。我有以下代码: from tkinter import * class Person: def __init__(self, name, age, title): self.name = name self.age = age self.title = title def print_person(self): return s

我正在玩弄Python 3.3中的
tkinter
,想知道如何使用/创建带有按钮的对象。我有以下代码:

from tkinter import *

class Person:
    def __init__(self, name, age, title):
        self.name = name
        self.age = age
        self.title = title

    def print_person(self):
        return self.name, str(self.age), self.title


def hello(lbl, nm):
    lbl.config(text="Hello, " + nm)


root = Tk()
frame = Frame(root)

name_lbl = Label(root, text="Name: ").grid()
name_ent = Entry(root)
name_ent.grid(row=0, column=1)

age_lbl = Label(root, text="Age: ").grid(row=1, column=0)
age_ent = Entry(root)
age_ent.grid(row=1, column=1)

title_lbl = Label(root, text="Title: ").grid(row=2, column=0)
title_ent = Entry(root)
title_ent.grid(row=2, column=1)

hello_lbl = Label(root, text="").grid(row=4, columnspan=2)
btn = Button(root, text="Confirm", command=lambda: Person(name_ent.get(), age_ent.get(), title_ent.get())).grid(row=3, columnspan=2)



root.mainloop()

如何命名通过单击按钮创建的对象以供以后使用?例如,如何对通过填写条目并单击按钮创建的对象使用
print\u person()
方法?

使用变量保存person对象

例如:

...
def create_a_person():
    global person
    person = Person(name_ent.get(), age_ent.get(), title_ent.get())

Button(root, text="Confirm", command=create_a_person).grid(row=3, columnspan=2)
Button(root, text="Print", command=lambda: print(person.print_person())).grid(row=4, columnspan=2)
...

顺便说一句,
grid
方法返回
None

hello_lbl = Label(root, text="").grid(row=4, columnspan=2) # => None
如果要保存
标签
反对,应使用以下表格:

hello_lbl = Label(root, text="")
hello_lbl.grid(row=4, columnspan=2)

使用全局变量时是否有任何危险/顾虑?@IanAuld,任何函数都可以更改
person
全局变量。此外,如果多次单击“确认”按钮,则只保留最后一个人;任何可能由全局变量引起的问题都可能发生在这里。(我使用全局变量来简化答案代码。)