python-изменение места виджета записи не произойдет и проблема с созданием ярлыка

#python #tkinter #tkinter-entry

#python #tkinter #tkinter-entry

Вопрос:

код представлен ниже, но не перемещено место виджета записи, метка также не создана. перед вводом этого кода [ e1.grid(строка = 1, столбец = 1) ] программа работает отлично, после ввода кода не работает, как справиться с этой проблемой..

программа

 try :
import tkinter as tk # Python 3
except :
import Tkinter as tk # Python 2

def update_sum() :
# Sets the sum of values of e1 and e2 as val of e3
try :
    sum_tk.set((float(e1_tk.get().replace(' ', ''))   float(e2_tk.get().replace(' ', ''))))
except :
    pass

root.after(10, update_sum) # reschedule the event
return

root = tk.Tk()
root.geometry('850x450')

e1_tk = tk.StringVar(root) # Initializes a text variable of tk to use to get e1's val.
e2_tk = tk.StringVar(root) # Initializes a text variable of tk to use to get e2's val.
sum_tk = tk.StringVar(root) # Initializes a text variable of tk to use to set e3's val.

# Entries
e1 = tk.Entry(root, textvariable = e1_tk)
e1.grid(row=1,column=1)
e2 = tk.Entry(root, textvariable = e2_tk)
e2.grid(row=1,column=2)
e3 = tk.Entry(root, textvariable = sum_tk)
e3.grid(row=1,column=3)

e1=Label(root,text="SL")
e1.grid(row=1,column=0)

e1.pack()
e2.pack()
e3.pack()

# Will update the sum every second 10 ms = 0.01 second it takes ms as arg.
root.after(10, update_sum)
root.mainloop()
  

Заранее спасибо..

Комментарии:

1. в вашей программе также есть ошибки, вы используете переменную e1 как для виджетов метки, так и для виджетов записи

2. Пожалуйста, исправьте отступ в вашем коде

3. Я запустил ваш код, и у меня есть все 4 виджета, упомянутых здесь. Не СМЕШИВАЙТЕ grid() и pack() , так как это приведет к таким ошибкам.

Ответ №1:

Вы используете одну и ту же переменную для 2 виджетов и используете для нее функцию сетки

Grid и pack — это 2 встроенных менеджера макетов, включая place

Мы можем использовать только один из них для одного элемента

В вашей программе вы упаковываете e1 , e2 , e3 и пытаетесь придать им макет сетки.

Также вы используете e1.grid() дважды с разными значениями столбцов.

 try :
    import tkinter as tk # Python 3
except :
    import Tkinter as tk # Python 2

def update_sum() :
# Sets the sum of values of e1 and e2 as val of e3
    try :
        sum_tk.set((float(e1_tk.get().replace(' ', ''))   float(e2_tk.get().replace(' ', ''))))
    except :
        pass

    root.after(10, update_sum) # reschedule the event
    return

root = tk.Tk()
root.geometry('850x450')

e1_tk = tk.StringVar(root) # Initializes a text variable of tk to use to get e1's val.
e2_tk = tk.StringVar(root) # Initializes a text variable of tk to use to get e2's val.
sum_tk = tk.StringVar(root) # Initializes a text variable of tk to use to set e3's val.

# Entries
e1 = tk.Entry(root, textvariable = e1_tk)
e1.grid(row=1,column=1)
e2 = tk.Entry(root, textvariable = e2_tk)
e2.grid(row=1,column=2)
e3 = tk.Entry(root, textvariable = sum_tk)
e3.grid(row=1,column=3)

e4=tk.Label(root,text="SL")
e4.grid(row=1,column=0)



# Will update the sum every second 10 ms = 0.01 second it takes ms as arg.
root.after(10, update_sum)
root.mainloop()
  

Комментарии:

1. не могли бы вы объяснить , что вам действительно нужно, Потому что в вашем коде есть переменные ошибки

2. я хочу создать ярлыки и изменить местоположение виджета записи

3. Я переписал ваш код, попробуйте запустить его, и если вы столкнетесь с какими-либо ошибками, прикрепите здесь еще один отзыв

4. это из-за интервала, нового для Python?