2016-10-20 4 views
-1

Пробовал создать простой калькулятор gui с tkinter, но как только я добавил e = Entry (root) e.pack(), он сбрасывает мою программу при запуске? удаление его заставляет мою программу работать нормально? очень смущен, почему он это делает, и задался вопросом, может ли быть причиной того, сколько у меня кода?Сбой программы Python Tkinter с записью

import sys 
from tkinter import * 
import webbrowser 
import time 

# window Defaults 



root = Tk() 
root.title("Calculator") 
root.geometry("319x212") 
root.configure(background="#3b3b3b") 
root.iconbitmap("Calculator.ico") 

e = Entry(root) 
e.pack() 




# Addition Numbers 

total = 0 

def plusOne(): 
    global total 
    total += 1 
    print(total) 
def plusTwo(): 
    global total 
    total += 2 
    print(total) 
def plusThree(): 
    global total 
    total += 3 
    print(total) 
def plusFour(): 
    global total 
    total += 4 
    print(total) 
def plusFive(): 
    global total 
    total += 5 
    print(total) 
def plusSix(): 
    global total 
    total += 6 
    print(total) 
def plusSeven(): 
    global total 
    total += 7 
    print(total) 
def plusEight(): 
    global total 
    total += 8 
    print(total) 
def plusNine(): 
    global total 
    total += 9 
    print(total) 
def plusZero(): 
    global total 
    total += 0 
    print(total) 
def print1(): 
    print("temp") 
def reset(): 
    global total 
    total -= total 
    print(total) 
def donothing(): 
    fileroot = Toplevel(root) 
    button = Button(fileroot, text="Do nothing button") 
    button.pack() 
def Help(): 
    time.sleep(0.5) 
    webbrowser.open ("http://www.bbc.co.uk/bitesize/ks2/maths/number/using_calculator/read/1/") 
def close(): 
    root.withdraw() 




# Dropdown Menu 

menu = Menu(root) 
filemenu = Menu(menu, tearoff=0) 
menu.add_cascade(label="File", menu=filemenu) 
menu.add_cascade(label="Help", command=Help) 
filemenu.add_command(label="Exit", command=close) 


# Buttons for numbers 


b1 = Button(root, width=15, text="1", font='courier', command = plusOne,) 
b2 = Button(root, width=15, text="2", font='courier', command = plusTwo,) 
b3 = Button(root, width=15, text="3", font='courier', command = plusThree,) 
b4 = Button(root, width=15, text="4", font='courier', command = plusFour,) 
b5 = Button(root, width=15, text="5", font='courier', command = plusFive,) 
b6 = Button(root, width=15, text="6", font='courier', command = plusSix,) 
b7 = Button(root, width=15, text="7", font='courier', command = plusSeven,) 
b8 = Button(root, width=15, text="8", font='courier', command = plusEight,) 
b9 = Button(root, width=15, text="9", font='courier', command = plusNine,) 
b0 = Button(root, width=15, text="0", font='courier', command = plusZero,) 
print1 = Button(root, width=15, text="=", font='courier', command = print1) 
Reset = Button(root, width=15, text="reset", font='courier', command = reset) 
b1.grid(row=0, column=0) 
b2.grid(row=0, column=1) 
b3.grid(row=1, column=0) 
b4.grid(row=1, column=1) 
b5.grid(row=2, column=0) 
b6.grid(row=2, column=1) 
b7.grid(row=3, column=0) 
b8.grid(row=3, column=1) 
b9.grid(row=4, column=0) 
b0.grid(row=4, column=1) 
print1.grid(row=5, column=1) 
Reset.grid(row=5, column=0) 


root.config(menu=menu) 
root.mainloop() 

ответ

4

Вы не можете использовать pack и grid вместе. Используйте e.grid() сообщение об ошибке

крушении должен сказать, что, как хорошо:

_tkinter.TclError: cannot use geometry manager grid inside . which already has slaves managed by pack