Entry Widget:将其存储在变量中

时间:2017-08-04 20:53:41

标签: python tkinter tkinter-entry

我想将Entry中的数据存储到变量中。 所以我这样做了:

 int CompareLists(Node headA, Node headB) {

        if(headA==null || headB==null){
            return 0;
        }

         else if(headA == null && headB == null) {
        return 1;
        }

        while(headA!=null &&headB!=null){
            if(headA.data==headB.data){
                headA=headA.next;
                headB=headB.next;
            }
            else{
                return 0;
            }
        }
         return 1;

    }

当我尝试的时候......

......它什么都没打印出来。我该怎么办(除了把printIt函数放入enter函数。我知道这个;我只想存储数据)?

2 个答案:

答案 0 :(得分:1)

player1player2enter()函数的本地函数,因此无法在其外部访问。虽然可以使它们成为可由任何和所有函数引用的全局变量,但是由于各种原因,全局变量通常被认为是不好的方法。 (请参阅Global Variables Are Bad了解为什么避免它们可能是一个好主意。)

避免在Tkinter应用程序中执行此操作的一种方法是使程序更加面向对象,并将主窗口定义为其Tkinter.Frame窗口小部件的子类。这很容易做到,然后您可以根据需要添加任意数量的附加属性,并通过self.xxx从任何方法引用它们,而不会使用一堆" stuff&#34来污染全局命名空间;

这就是我的意思(请注意,我删除了您的e1e2变量,因为它们都被分配了None(因为那是pack() from Tkinter import * class App(Frame): def __init__(self, title, master=None): Frame.__init__(self, master) # initialize base class self.pack() self.master.title(title) self.var1 = StringVar() self.var2 = StringVar() Label(self, text="Player One: ").pack(side=LEFT) Entry(self, textvariable=self.var1).pack(side=LEFT) Label(self, text="Player Two: ").pack(side=LEFT) Entry(self, textvariable=self.var2).pack(side=LEFT) Button(self, width=15, text="ENTER", command=self.enter).pack(side=LEFT) Button(self, width=15, text="PRINT", command=self.printIt).pack(side=LEFT) def enter(self): self.player1 = self.var1.get() self.player2 = self.var2.get() def printIt(self): print(self.player1) print(self.player2) app = App("Player's Names") app.mainloop() 1}}方法返回)。无论如何,它们都没有被其他地方使用,这可能就是你从未注意到的原因。

Hibernate Validator

答案 1 :(得分:0)

player1player2仅作为 local 变量存储在函数中,这意味着只能在 函数中访问它们。< / p>

您应该返回结果:

def enter():
    return [var1.get(), var2.get()]

def printIt():
    print enter()[0], enter()[1]

或者通过在函数之外声明它们来使它们成为全局变量,这可能更简单:

main = Tk()

main.title("Players Names")

var1 = StringVar()
var2 = StringVar()
player1 = None               # Global variable declaration
player2 = None

Label(main, text="Player One: ").pack(side=LEFT)
e1 = Entry(main, textvariable=var1).pack(side=LEFT)
Label(main, text="Player Two: ").pack(side=LEFT)
e2 = Entry(main, textvariable=var2).pack(side=LEFT)

def enter():
    global player1, player2
    player1 = var1.get()
    player2 = var2.get()


def printIt():
    global player1, player2
    print player1
    print player2

Button(main, width=15, text="ENTER", command=enter).pack(side=LEFT)
Button(main, width=15, text="PRINT", command=printIt).pack(side=LEFT)

main.mainloop()
相关问题