Python tkinter get() 从另一个函数
def CreateGUI():
WinCreate=Toplevel(master)
WinCreate.attributes("-toolwindow",1)
WinCreate.resizable(0,0)
WinCreate.transient(master)
WinCreate.grab_set()
sideframe=Frame(WinCreate,bd=2,relief=GROOVE)
Label(WinCreate,text=" logbook ",fg="White",bg="#3b5998",font=("RoyalBavarian",20)).pack(side=TOP,fill=X)
Label(sideframe,text="Name: ",fg="Black",font=("Tahoma",12)).grid(row=0,column=0,sticky=E)
Label(sideframe,text="Age: ",fg="Black",font=("Tahoma",12)).grid(row=1,column=0,sticky=E)
Label(sideframe,text="Gender: ",fg="Black",font=("Tahoma",12)).grid(row=2,column=0,sticky=E)
Label(sideframe,text="Eye Color: ",fg="Black",font=("Tahoma",12)).grid(row=3,column=0,sticky=E)
txtName=Entry(sideframe)
txtAge=Entry(sideframe)
txtEye=Entry(sideframe)
txtName.grid(row=0,column=1)
txtAge.grid(row=1,column=1)
var=StringVar(sideframe)
var.set("Male")
optGender=OptionMenu(sideframe,var,"Male","Female")
optGender.grid(row=2,column=1)
txtEye.grid(row=3,column=1)
sideframe.pack(side=LEFT,pady=7,padx=7,ipady=3,ipadx=3)
rightside=Frame(WinCreate,height=116,width=283)
irighttop=Frame(rightside,bd=2,relief=GROOVE)
irightbottom=Frame(rightside,bd=2,width=274,height=50,relief=GROOVE)
Label(irighttop,text="Username: ",fg="Black",font=("Tahoma",12)).grid(row=0,column=0,sticky=E)
Label(irighttop,text="Password: ",fg="Black",font=("Tahoma",12)).grid(row=1,column=0,sticky=E)
Label(irighttop,text="Confirm Password: ",fg="Black",font=("Tahoma",12)).grid(row=2,column=0,sticky=E)
txtUsername=Entry(irighttop)
txtPassword=Entry(irighttop)
txtConPass=Entry(irighttop)
txtUsername.grid(row=0,column=1)
txtPassword.grid(row=1,column=1)
txtConPass.grid(row=2,column=1)
irighttop.pack(side=TOP,ipady=3,ipadx=3)
btnCreateFinal=Button(irightbottom,text="Create",fg="Black",command=Create(txtName,txtAge,txtEye,var,txtPassword,txtConPass,txtUsername))
btnCancel=Button(irightbottom,text="Cancel",fg="Black")
btnCreateFinal.pack(side=LEFT)
btnCancel.pack(side=RIGHT)
irightbottom.pack_propagate(0)
irightbottom.pack(side=BOTTOM,ipady=3,ipadx=3)
rightside.pack_propagate(0)
rightside.pack(side=RIGHT)
def Create(txtName,txtAge,txtEye,var,txtPassword,txtConPass,txtUsername):
choice='1'
password="blank"
conpassword="blank2"
#----------------------
name=txtName.get()
age=txtAge.get()
gender=var.get()
eye=txtEye.get()
password=txtPassword.get()
conpassword=txtConPass.get()
我的问题是,如果输入框位于另一个函数中,如何从输入框中获取数据?所有输入框都在 CreateGUI() 函数中。我想将变量 txtName 等传递给 Create() 函数。这个方法正确吗?
def CreateGUI():
WinCreate=Toplevel(master)
WinCreate.attributes("-toolwindow",1)
WinCreate.resizable(0,0)
WinCreate.transient(master)
WinCreate.grab_set()
sideframe=Frame(WinCreate,bd=2,relief=GROOVE)
Label(WinCreate,text=" logbook ",fg="White",bg="#3b5998",font=("RoyalBavarian",20)).pack(side=TOP,fill=X)
Label(sideframe,text="Name: ",fg="Black",font=("Tahoma",12)).grid(row=0,column=0,sticky=E)
Label(sideframe,text="Age: ",fg="Black",font=("Tahoma",12)).grid(row=1,column=0,sticky=E)
Label(sideframe,text="Gender: ",fg="Black",font=("Tahoma",12)).grid(row=2,column=0,sticky=E)
Label(sideframe,text="Eye Color: ",fg="Black",font=("Tahoma",12)).grid(row=3,column=0,sticky=E)
txtName=Entry(sideframe)
txtAge=Entry(sideframe)
txtEye=Entry(sideframe)
txtName.grid(row=0,column=1)
txtAge.grid(row=1,column=1)
var=StringVar(sideframe)
var.set("Male")
optGender=OptionMenu(sideframe,var,"Male","Female")
optGender.grid(row=2,column=1)
txtEye.grid(row=3,column=1)
sideframe.pack(side=LEFT,pady=7,padx=7,ipady=3,ipadx=3)
rightside=Frame(WinCreate,height=116,width=283)
irighttop=Frame(rightside,bd=2,relief=GROOVE)
irightbottom=Frame(rightside,bd=2,width=274,height=50,relief=GROOVE)
Label(irighttop,text="Username: ",fg="Black",font=("Tahoma",12)).grid(row=0,column=0,sticky=E)
Label(irighttop,text="Password: ",fg="Black",font=("Tahoma",12)).grid(row=1,column=0,sticky=E)
Label(irighttop,text="Confirm Password: ",fg="Black",font=("Tahoma",12)).grid(row=2,column=0,sticky=E)
txtUsername=Entry(irighttop)
txtPassword=Entry(irighttop)
txtConPass=Entry(irighttop)
txtUsername.grid(row=0,column=1)
txtPassword.grid(row=1,column=1)
txtConPass.grid(row=2,column=1)
irighttop.pack(side=TOP,ipady=3,ipadx=3)
btnCreateFinal=Button(irightbottom,text="Create",fg="Black",command=Create(txtName,txtAge,txtEye,var,txtPassword,txtConPass,txtUsername))
btnCancel=Button(irightbottom,text="Cancel",fg="Black")
btnCreateFinal.pack(side=LEFT)
btnCancel.pack(side=RIGHT)
irightbottom.pack_propagate(0)
irightbottom.pack(side=BOTTOM,ipady=3,ipadx=3)
rightside.pack_propagate(0)
rightside.pack(side=RIGHT)
def Create(txtName,txtAge,txtEye,var,txtPassword,txtConPass,txtUsername):
choice='1'
password="blank"
conpassword="blank2"
#----------------------
name=txtName.get()
age=txtAge.get()
gender=var.get()
eye=txtEye.get()
password=txtPassword.get()
conpassword=txtConPass.get()
My question here is how can I get data from the entry boxes if they are in another function? All the entry boxes are in CreateGUI() function. I thought to pass the variables txtName etc to the Create() function. Is this method correct?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
GUI 编程通常在类内完成:
通过将
txtName
设为self
的属性,您可以使用self.txtName
在其他方法中访问其值。其他变量也可以用同样的方法处理。GUI programming is usually done inside a class:
By making
txtName
an attribute ofself
, you can access its value in other methods withself.txtName
. The other variables can be handled the same way.为您的 Entry 小部件提供一个 StringVar 实例来存储输入非常有用。
然后在您调用的其他函数中:
这在类中效果更好,因为它使 GUI 更易于管理。
It is useful to give your Entry widgets a StringVar instance to store input.
Then in some other function you call:
This is all better off inside a class as it makes the GUI much easier to manage.