我想将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函数。我知道这个;我只想存储数据)?
答案 0 :(得分:1)
player1
和player2
是enter()
函数的本地函数,因此无法在其外部访问。虽然可以使它们成为可由任何和所有函数引用的全局变量,但是由于各种原因,全局变量通常被认为是不好的方法。 (请参阅Global Variables Are Bad了解为什么避免它们可能是一个好主意。)
避免在Tkinter应用程序中执行此操作的一种方法是使程序更加面向对象,并将主窗口定义为其Tkinter.Frame
窗口小部件的子类。这很容易做到,然后您可以根据需要添加任意数量的附加属性,并通过self.xxx
从任何方法引用它们,而不会使用一堆" stuff&#34来污染全局命名空间;
这就是我的意思(请注意,我删除了您的e1
和e2
变量,因为它们都被分配了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)
player1
和player2
仅作为 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()