доступ к виджету входа через get

Function Test {
 Param([string]$arg1, [string]$arg2)
    Write-Host $arg1
    Write-Host $arg2
}

Это правильное объявление параметров https://technet.microsoft.com/en-us/library/dd347600.aspx

И это действительно работает

0
задан Mike - SMT 16 January 2019 в 16:28
поделиться

1 ответ

При определении переменной внутри функции, если вы не используете global, тогда функция будет предполагать, что вы хотите назначить эту переменную только локально. В основном это будет означать, что ничто другое в вашем коде не может получить доступ к этой переменной, если вы не пометите ее как global или не передадите ее непосредственно другой функции.

Итак, добавьте это:

global trennzeichenentry

В функции menubaroptions, например, так:

def menubaroptions(root):
     global trennzeichenentry

Вам также нужно будет определить глобальное в другом методе. Все это говорит о том, что вы действительно не хотите использовать global в классе, и ваш класс должен быть переработан, чтобы компенсировать это должным образом.

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

import tkinter as tk


class GraphicalUserInterface(tk.Tk):
    def __init__(self):
        super().__init__()
        self.minsize(560, 105)
        self.entry_string = tk.IntVar()
        self.taktzykluszeit = tk.DoubleVar()
        self.menubar_options()
        tk.Button(self, text='print entries', command=self.method_i_want_to_call_the_variable_in).grid()

    def menubar_options(self):
        optionswindow = tk.Toplevel(self)
        optionswindow.minsize(300, 150)
        tk.Label(optionswindow, text="Length of Separator in Byte:").pack()
        self.trennzeichenentry = tk.Entry(optionswindow, textvariable=self.entry_string, width=30, justify="center")
        self.trennzeichenentry.pack()
        tk.Label(optionswindow, text="Measurementtime for all \n Temperature-Sensors in sec").pack()
        self.taktzykluszeitentry = tk.Entry(optionswindow, textvariable=self.taktzykluszeit, width=30, justify="center")
        self.taktzykluszeitentry.pack()

    def method_i_want_to_call_the_variable_in(self):
        print(self.trennzeichenentry.get())
        print(self.taktzykluszeitentry.get())

if __name__ == '__main__':
    GraphicalUserInterface().mainloop()
0
ответ дан Mike - SMT 16 January 2019 в 16:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: