Aug-11-2018, 01:09 AM
I am developing Static IP configuration GUI on ubuntu Linux using Python tkinter.As shown in this IP Configuration GUI figure Where I have two Label and two entry field and two button on root window.And I have a touch keypad on toplevel window.
![[Image: 4d0fj.jpg]](https://i.stack.imgur.com/4d0fj.jpg)
I have to do following two tasks so could anyone help me out in below listed features:
![[Image: g3zer.jpg]](https://i.stack.imgur.com/g3zer.jpg)
![[Image: 4d0fj.jpg]](https://i.stack.imgur.com/4d0fj.jpg)
I have to do following two tasks so could anyone help me out in below listed features:
- Whenever I will click on particular entry field I have to pop up this touch keypad which I developed and have to insert a text on that entry field using that touch keypad.Right now both touch keypad and entry field window appeared together.
- I also have to make entry field as shown in below figure. After 3 digits there should be a dot on entry field as like in IP address.
![[Image: g3zer.jpg]](https://i.stack.imgur.com/g3zer.jpg)
from tkinter import *
class Numpad(Frame):
def __init__(self,root,rownum,colnum):
Frame.__init__(self,root)
self.grid(row=int(rownum), column=int(colnum))
def numpad_create(self):
btn_list = ['7','8','9','4','5','6','1','2','3','0']
r = 0
c = 0
for b in btn_list:
self.b = Button(self, text=b, width=3 ,height=3, bg='blue', fg="#FFFFFF", font=('bold',16),
activebackground='red', activeforeground="#FFFFFF", command = lambda btn=b:self.digit_action(btn))
self.b.grid(row=r,column=c)
c += 1
if c > 2:
c = 0
r += 1
self.b1=Button(self, text='<-', width=3 ,height=3, bg='blue', fg="#FFFFFF", font=('bold',16),
activebackground='red', activeforeground="#FFFFFF", command = lambda:self.backspace())
self.b1.grid(row=3,column=1)
self.b2=Button(self, text='C', width=3 ,height=3, bg='blue', fg="#FFFFFF", font=('bold',16),
activebackground='red', activeforeground="#FFFFFF", command = lambda:self.clear())
self.b2.grid(row=3,column=2)
def digit_action(btn):#To pass clicked digits into perticular entry field
entry1.insert(END,btn)
entry2.insert(END,btn)
def backspace():#Delete one digit at a time into perticular entry field
pass
def clear():#Clear text in perticular entry field
entry1.delete(0,END)
entry2.delete(0,END)
root = Tk()
root.geometry("300x300")
root.title("Network Configuration")
frame1=Frame(root)
frame1.grid(row=0,column=0)
toplevel=Toplevel(root)
toplevel.title('KeyPad')
ip_label = Label(frame1,text='IP Address: ',width=12,font=("TkTextFont",14),anchor='e')
netmask_label = Label(frame1,text='Netmask: ',width=12,font=("TkTextFont",14),anchor='e')
entry1=Entry(frame1,width=15)
entry2=Entry(frame1,width=15)
save=Button(frame1,text='Save', width=5 ,height=2, bg='blue', fg="#FFFFFF", font=('bold',16),
activebackground='red', activeforeground="#FFFFFF", command = lambda:save_action())
cancel=Button(frame1,text='Cancel', width=5 ,height=2, bg='blue', fg="#FFFFFF", font=('bold',16),
activebackground='red', activeforeground="#FFFFFF", command = lambda:cancel_action())
def save_action():#to save ip address and netmask for changing system network settings
pass
def cancel_action():#Cancel configuration page
root.quit()
#Label,Entry and Button on root window
ip_label.grid(row=0,column=0,pady=5,padx=5)
netmask_label.grid(row=1,column=0,pady=5,padx=5)
entry1.grid(row=0,column=1,pady=5,padx=5)
entry2.grid(row=1,column=1,pady=5,padx=5)
save.grid(row=3,column=0,pady=5,padx=5)
cancel.grid(row=3,column=1,pady=5,padx=5)
#Numpad on Toplevel window
app = Numpad(toplevel,0,0)
Numpad.numpad_create(toplevel)
root.mainloop()
