Почему я не могу получить значение переменных tkinter? - PullRequest
1 голос
/ 03 июня 2019

Я пытаюсь добавить окно конфигурации в симуляцию связанного генератора. Но когда я хочу получить значение переменных tkinter для настройки системы, я получаю только ''.

Я пытался изменить тип с tk.DoubleVar () на tk.StringVar (), но, похоже, ничего не работает ...

Здесь код для фрейма конфигурации для одного объекта. Затем я создаю два из них и добавляю их в фрейм конфигурации.

import tkinter as tk


class MassConfig(tk.Frame):

    def __init__(self, root, **kwargs):
        tk.Frame.__init__(self, root, kwargs)
        self.grid()

        # Variables :
        self.weight = tk.StringVar()
        self.vitesse = tk.StringVar()
        self.position = tk.StringVar()

        self.lbl_weight = tk.Label(self, text='Masse :')
        self.lbl_weight.grid(row=0, column=0)
        self.entry_weight = tk.Entry(self, textvariable=self.weight, width=5)
        self.entry_weight.grid(row=0, column=1)

        self.lbl_vit = tk.Label(self, text='Vitesse :')
        self.lbl_vit.grid(row=1, column=0, pady=5)
        self.entry_vit = tk.Entry(self, textvariable=self.vitesse, width=5)
        self.entry_vit.grid(row=1, column=1)

        self.lbl_pos = tk.Label(self, text='Position :')
        self.lbl_pos.grid(row=2, column=0)
        self.entry_pos = tk.Entry(self, textvariable=self.position, width=5)
        self.entry_pos.grid(row=2, column=1)

Здесь код фрейма конфигурации, внутри которого есть два фрейма MassConfig.

import tkinter as tk
from gui.masse_config import MassConfig


class Configuration(tk.Frame):

    def __init__(self, root, **kwargs):
        tk.Frame.__init__(self, root, **kwargs)
        self.root = root
        self.grid()
        self.update()

        self.is_alive = True

        self.data = {}
        self.m1_frame = tk.LabelFrame(self, text='Masse 1', width=200, height=200)
        self.m1_frame.grid(column=0, row=0, padx=(10, 5), pady=(10, 10))

        self.m2_frame = tk.LabelFrame(self, text='Masse 2', width=200, height=200)
        self.m2_frame.grid(column=1, row=0, padx=(5, 10), pady=(10, 10))

        self.config_1 = MassConfig(self.m1_frame)
        self.config_2 = MassConfig(self.m2_frame)
        self.config_1.grid(padx=10, pady=10)
        self.config_2.grid(padx=10, pady=10)

        self.btn_validation = tk.Button(self, text='Valider', command=self.validation)
        self.btn_validation.grid(row=3, column=1, padx=10, pady=(0, 10), sticky=tk.E)

        self.update()

    def validation(self):

        print(":", self.config_1.position.get())

        self.data['Mass 1'] = {}
        self.data['Mass 1']['Position'] = self.config_1.position.get()
        self.data['Mass 1']['Vitesse'] = self.config_1.vitesse.get()
        self.data['Mass 1']['Masse'] = self.config_1.weight.get()

        self.data['Mass 2'] = {}
        self.data['Mass 2']['Position'] = self.config_2.position.get()
        self.data['Mass 2']['Vitesse'] = self.config_2.vitesse.get()
        self.data['Mass 2']['Masse'] = self.config_2.weight.get()

        self.is_alive = False
        self.root.destroy()

Я хочу получить значение переменных tkinter self.weight, self.vitesse и self.position из класса MassConfig в словаре (self.data из класса Configuration). Но ничего не вышло, кроме ''.

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