Function Test { Param([string]$arg1, [string]$arg2) Write-Host $arg1 Write-Host $arg2 }
Это правильное объявление параметров https://technet.microsoft.com/en-us/library/dd347600.aspx
И это действительно работает
При определении переменной внутри функции, если вы не используете 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()