2013-04-22 108 views
4

即时制作一个简单的Tkinter计算器,但我似乎无法正确排列输入形式和按钮。Tkinter窗口格式化(Python)

这里是我当前的代码

from Tkinter import * 

def calculate(): 
    try: 
     num1 = float(enter1.get()) 
     num2 = float(enter2.get()) 
     result = num1 * num2 
     label3.config(text=str(result)) 
    except ValueError: 
     label3.config(text='Enter numeric values!') 
def calculate2(): 
    try: 
     num1 = float(enter1.get()) 
     num2 = float(enter2.get()) 
     result = num1/num2 
     label3.config(text=str(result)) 
    except ValueError: 
     label3.config(text='Enter numeric values!') 
def calculate3(): 
    try: 
     num1 = float(enter1.get()) 
     num2 = float(enter2.get()) 
     result = num1 + num2 
     label3.config(text=str(result)) 
    except ValueError: 
     label3.config(text='Enter numeric values!') 
def calculate4(): 
    try: 
     num1 = float(enter1.get()) 
     num2 = float(enter2.get()) 
     result = num1 - num2 
     label3.config(text=str(result)) 
    except ValueError: 
     label3.config(text='Enter numeric values!') 

root = Tk() 



label1 = Label(root, text='First Number:') 
label1.grid(row=0, column=1) 
enter1 = Entry(root, bg='white') 
enter1.grid(row=1, column=1) 


label2 = Label(root, text='Second Number:') 
label2.grid(row=2, column=1) 
enter2 = Entry(root, bg='white') 
enter2.grid(row=3, column=1) 


btn1 = Button(root, text='X', command=calculate) 
btn1.grid(row=4, column=1) 
btn2 = Button(root, text='/', command=calculate2) 
btn2.grid(row=5, column=1) 
btn3 = Button(root, text='+', command=calculate3) 
btn3.grid(row=5, column=2) 
btn4 = Button(root, text='-', command=calculate4) 
btn4.grid(row=4, column=2) 

label3 = Label(root) 
label3.grid(row=6, column=1) 


enter1.focus() 

enter1.bind('<Return>', func=lambda e:enter2.focus_set()) 

root.mainloop() 

What the Widget looks like now

我想行这一切,并使它所以加号和减号按钮下的输入形式,如果有人能够帮助这将是非常感谢你

回答

5

你可以使用columnspan参数跨越标签和条目两列。作为边注,请记住,列索引也从零开始:

label1.grid(row=0, column=0, columnspan=2) 
enter1.grid(row=1, column=0, columnspan=2) 
label2.grid(row=2, column=0, columnspan=2) 
enter2.grid(row=3, column=0, columnspan=2) 

btn1.grid(row=4, column=0) 
btn2.grid(row=5, column=0) 
btn3.grid(row=5, column=1) 
btn4.grid(row=4, column=1) 

label3.grid(row=6, column=0, columnspan=2) 

另一种解决方案是通过2

+0

以创建新帧,并把其内部的按钮,形成为2的简单的网格非常感谢你!! – Serial 2013-04-22 01:19:38

+0

@ChristianCareaga不客气;) – 2013-04-22 01:26:08