#python #tkinter #spyder
#python #tkinter #spyder
Вопрос:
Я получаю эту ошибку при выполнении кода:
TclError: невозможно использовать сетку geometry manager внутри .!фрейма, в котором уже есть подчиненные устройства, управляемые pack.
from tkinter import *
import tkinter as tk
my_window=tk()
frame_name=Frame(my_window)
label_first=Label(frame_name,text="First")
label_first.pack()
label_middle=Label(frame_name,text="Middle")
label_middle.pack()
label_surname=Label(frame_name,text="Surname")
label_surname.pack()
entry_first=Entry(frame_name)
entry_middle=Entry(frame_name)
entry_surname=Entry(frame_name)
button_submit_name=Button(frame_name,text=" Submit ")
label_first.grid(row=0,column=0)
label_middle.grid(row=1,column=0)
label_surname.grid(row=2,column=0)
entry_first.grid(row=0,column=1)
entry_middle.grid(row=1,column=1)
entry_surname.grid(row=2,column=1)
button_submit_name.grid(row=3,columnspan=2)
frame_name.grid(row=0,column=0)
my_window.mainloop()
Комментарии:
1. в каждом виджете вы можете использовать только один менеджер геометрии (
grid
,pack
илиplace
) — отдельные виджеты могут использовать разные менеджеры геометрии.
Ответ №1:
Ошибка точно указывает вам, что не так: вы не можете использовать оба grid
и pack
с виджетами, у которых есть общий мастер.
Решение состоит в том, чтобы использовать один или другой для всех виджетов, которые используют один и тот же мастер или родительский элемент.