2016-06-17 24 views
-1

私はコードを書くことを学んでいます。私は、自分の最初の「自分で」作成したアプリケーションで、DHCPリクエストを送信するときに作業中のタイピングを自動化するために使用する予定です。私は、複数行の文字列の中で変数に設定した複数のエントリを呼び出す問題があります。私はStringVar()とtextvariableをentry()の中で使ってみました。アドバイスをいただければ幸いです。私は問題がstr1変数であると信じていますが、私の経験と理解の欠如は私に困惑しています。結果は変数PY_VAR0で戻ってきます。これは何かがうんざりしていることを意味し、プログラムはどこを見ているのか分からない(私は思う)。あなたのコード内の二つの主要な問題がありますTkinterを使って複数の変数を複数の変数に代入して呼び出す方法

from Tkinter import * 

win = Tk() 

win.minsize(width=300, height=200) 
win.maxsize(width=650, height=500) 

#Definitions 
def dhcp(): 
    print str1 
lab1 = Label(win, text="PC Name: ") 
lab2 = Label(win,text="MAC Address: ") 
lab3 = Label(win, text="IP Address") 
but1 = Button(win, text="DHCP", command=dhcp) 
but2 = Button(win, text="NODE") 
but3 = Button(win, text="BOTH") 
pc_name = StringVar() 
entry1 = Entry(win, textvariable=pc_name) 
mac_add = StringVar() 
entry2 = Entry(win, textvariable=mac_add) 
ip_add = StringVar() 
entry3 = Entry(win, textvariable=ip_add) 


str1= """host %s 
       { 
         hardware ethernet %s ; 
         fixed-address %s ; 
         option host-name %s ; 
       }"""%(pc_name, mac_add, ip_add, pc_name) 

#Layout and Framing 

lab1.grid(row=0) 
lab2.grid(row=1) 
lab3.grid(row=2) 
entry1.grid(row=0, column=1) 
entry2.grid(row=1, column=1) 
entry3.grid(row=2, column=1) 
but1.grid(row=3, column=0) 
but2.grid(row=4, column=0) 
but3.grid(row=5, column=0) 

win.mainloop() 
+0

私はマルチライン文字列で何をしていますか? 'StringVar'の値を** **取得するには、' pc_name.get() 'などを使う必要がありますが、初期化の直後に行うのはあまり役に立ちません。 –

+0

私はstr1の最初と最後の%sのdhcpにentry1を入力したユーザーからpc_name文字列を挿入する必要があります。 –

+0

ok ... '%(pc_name、mac_add、ip_add、pc_name)'を取り除き、フォーマットマークを付した文字列をそのまま保存してください。フォーマットされたバージョンを取得する必要がある場合、 'formatted_str = str1% 'pc_name.get()、mac_add.get()、ip_add.get()、pc_name.get())' –

答えて

0

:STRINGVAR str1が彼の称賛で述べたTadhg McDonald-Jensenたよう

を内蔵している

  • 時間の

    • 使用法は、Tkinter.StringVarですbeeingはそのget()によってアクセスされます - 方法。あなたの文字列ビルドは次のようになります:

      
      str1= """host %s 
           { 
            hardware ethernet %s ; 
            fixed-address %s ; 
            option host-name %s ; 
           }"""%(pc_name.get(), mac_add.get(), ip_add.get(), pc_name.get()) 
      

      この割り当てはdhcpコールバック内で行う必要があります。どうして?なぜなら、要素を作成するときではなく、ユーザーがボタンを押したときにデータを読みたいからです。

      
      #Definitions 
      def dhcp(): 
          str1= """host %s 
            { 
             hardware ethernet %s ; 
             fixed-address %s ; 
             option host-name %s ; 
            }"""%(pc_name.get(), mac_add.get(), ip_add.get(), pc_name.get()) 
          print str1 
      
  • 関連する問題