2012-01-23 14 views
4
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()関数に渡すと考えました。この方法は正しいですか?Python tkinter get()別の関数から

答えて

3

GUIプログラミングは、通常クラス内で行われます。

class SimpleApp(object): 
    def createGUI(self): 
     ... 
     self.txtName=Entry(sideframe) 
     self.txtName.grid(row=0,column=1) 

    def create(self): 
     ... 
     name=self.txtName.get() 

txtNameselfの属性にすることで、あなたはself.txtNameと他の方法でその値にアクセスすることができます。他の変数も同様に扱うことができます。

+0

ありがとう!私はこれを試してみる。私は最初にクラスのドキュメントを読むつもりです –

1

入力ウィジェットに入力を格納するStringVarインスタンスを与えると便利です。

self.myStringVar = tk.StringVar() 
    self.myEntryWidget = tk.Entry(self.myFrame,textvariable=self.myStringVar) 
    self.myEntryWidget.grid(row=1,column=1) 

は、次に、あなたが呼び出す他のいくつかの機能に:それは管理がGUIがはるかに容易になりますよう

self.myStringVar.get() 

これは、クラス内のすべてオフに優れています。

+0

"need"はかなり強い言葉です。変数を使うだけではこの問題の解決策ではありません。 –

関連する問題