私はコードを書くことを学んでいます。私は、自分の最初の「自分で」作成したアプリケーションで、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()
私はマルチライン文字列で何をしていますか? 'StringVar'の値を** **取得するには、' pc_name.get() 'などを使う必要がありますが、初期化の直後に行うのはあまり役に立ちません。 –
私はstr1の最初と最後の%sのdhcpにentry1を入力したユーザーからpc_name文字列を挿入する必要があります。 –
ok ... '%(pc_name、mac_add、ip_add、pc_name)'を取り除き、フォーマットマークを付した文字列をそのまま保存してください。フォーマットされたバージョンを取得する必要がある場合、 'formatted_str = str1% 'pc_name.get()、mac_add.get()、ip_add.get()、pc_name.get())' –