我正在学习编码,只是从python开始。我构建了我的第一个“on my own”应用程序,我打算在发送DHCP请求时自动执行某些打字工作。我在调用我已设置为多行字符串中的变量的多个条目时遇到问题。我尝试在entry()中使用StringVar()和textvariable。任何意见,将不胜感激。我认为问题在于str1变量,但我缺乏经验和理解让我感到难过。结果返回变量PY_VAR0,这意味着我有一些搞砸了,程序不知道在哪里看(我认为)。
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 :(得分:0)
您的代码中有两个主要问题:
正如Tadhg McDonald-Jensen在他的推荐中所提到的,Tkinter.StringVar正在通过其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