В отношении tkinter, что означает это предупреждение? - PullRequest
0 голосов
/ 27 января 2020

Предупреждение здесь См. Предупреждение в нижней части кода на изображении.

import tkinter as tk
from tkinter import ttk
from tkinter import font
try:
    from ctypes import windll
    windll.shcore.SetDpiAwareness(1)
except Exception as e:
    pass


class DistanceConvertor(tk.Tk):
    def __init__(self, **args, **kwargs):
        super().__init__(**args, **kwargs)

        self.title('Distance Convertor')
        self.geometry('600x600')
        self.resizable(False, False)

        self.frame = MetersToFeet(self, padding=(60, 30))
        self.frame.grid()

        self.bind('<Return>', self.frame.calculate_feet)
        self.bind('KP_Enter', self.frame.calculate_feet)

class MetersToFeet(ttk.Frame):
    def __init__(self, container, **kwargs):
        super().__init__(container, **kwargs)

        self.feet_value = tk.StringVar
        self.metres_value = tk.StringVar

        meters_label = ttk.Label(self, text ='Metres:')
        meters_input = ttk.Entry(self, width=10, textvariable=self.metres_value)
        feet_label = ttk.Label(self, text='Feet:')
        feet_display = ttk.Label(self, textvariable=self.feet_value)
        calc_button = ttk.Button(self, text='CALCULATE', command=self.calculate_feet)

        meters_label.grid(column=0, row=1, sticky='W')
        meters_input.grid(column=0, row=1, sticky='E')
        feet_label.grid(column=1, row=0, sticky='W')
        feet_display.grid(column=1, row=1, sticky='EW')
        calc_button.grid(column=0, row=2, sticky='EW')

        for child in self.winfo_children():
            child._grid_configure(padx=5, pady=5)

    def calculate_feet(self, *args):
        try:
            metres = float(self.metres_value.get())
            feet = metres*3.2884
            self.feet_value.set(f'{feet: .3f}')
        except ValueError:
            pass

root = DistanceConvertor()

root.columnconfigure(0, weight=1)
font.nametofont('TkDefaultFont').configure(size=15)
root.mainloop()

1 Ответ

0 голосов
/ 27 января 2020

По соглашению, методы класса, начинающиеся с подчеркивания, считаются «защищенными», что означает, что вы никогда не должны вызывать их вне класса. В этом случае вы звоните _grid_configure, поэтому это предупреждение предполагает, что вы не должны этого делать.

Предупреждение верно, нет причины звонить _grid_configure. Вы должны удалить подчеркивание и вызвать метод publi c grid_configure.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...