я изучаю Python, и у меня есть вопрос о методе .grid(). В примере, который привел автор, он делает импорт с помощью * вот так:
from tkinter import *
from tkinter import ttk, filedialog, messagebox
import base64
import json
import os
from bs4 import BeautifulSoup
import requests
затем он создает корневое окно и основной фрейм, например:
_root = Tk() # tkinter object, main window
_root.title('Scrape app') # window title
_root.resizable(width=False, height=False)
_mainframe = ttk.Frame(_root, padding='5 5 5 5')
_mainframe.grid(row=0, column=0, sticky=(E, W, N, S))
Пока все хорошо, все ловлю. Проблема начинается, когда он говорит, что импорт с * не является хорошей практикой из-за конфликтов имен, поэтому в одной из моих попыток создать что-то подобное, думая о хорошей практике, я сделал это:
import tkinter as tk
from tkinter import ttk, messagebox, filedialog
import base64
import json
import os
from bs4 import BeautifulSoup
import requests
root_window = tk.Tk()
root_window.title('My first attemp of custom guiscrape')
root_window.resizable(width=False, height=False)
# First Frame
g_main_frame = ttk.Frame(root_window, padding='5 5 5 5')
g_main_frame.grid(row=0, column=0, sticky='NSWE')
g_url_frame = ttk.LabelFrame(g_main_frame, text='URL', padding='5 5 5 5')
g_url_frame.grid(row=0, column=0, sticky='EW')
g_url_frame.columnconfigure(0, weight=1)
g_url_frame.rowconfigure(0, weight=1)
var_url = tk.StringVar()
var_url.set('http://localhost:8000')
g_url_entry = ttk.Entry(g_url_frame, width=40, textvariable=var_url)
g_url_entry.grid(row=0, column=0, sticky='NESW', padx=5)
root_window.mainloop()
Проблема здесь в том, что когда появляется _mainframe.grid(), липкая опция получает кортеж с четырьмя константами, в примере автора, но когда я пытаюсь указать кортеж в своей попытке, я получаю сообщение об ошибке, константа E не определена, поэтому я необходимо использовать строку типа 'NEWS', сильно отличающуюся от авторского подхода (N, E, W, S).
Есть ли разница с методом сетки от tkinter и ttk? что может быть лучшим подходом к его использованию? я не могу найти больше документации о ttk, которая могла бы решить мои сомнения, надеюсь, вы можете помочь!