panama555
Июль 8, 2019 19:31:34
Привет!
Начал изучать возможности tkinter.
Появился такой вопрос:
я создаю кнопку “abc”и привязываю к ней функцию “fn1” при нажатии-
abc = tkinter.Button(tk,text=“123”, command= fn1)
тут всё понятно. Вопрос - как передать в функцию fn1 какие-нибудь параметры
ведь за название функции нет скобок, куда ж их вставлять?
marvellik
Июль 8, 2019 20:14:36
abc = tkinter.Button(tk,text='123', command= lambda : fn1(arg))
еще по вопросу
panama555
Июль 8, 2019 20:37:44
С этим разобрался, спасибо.
Теперь не пойму - можно ли из этой функции вернуть значение с помощью return?
КУДА return вернёт это значение? ведь нет переменной которой присвоен вызов функции
marvellik
Июль 8, 2019 21:39:52
а зачем вам это нужно в тк? функция должна что то выполнить, допустим получить два значения из полей ввода сложить их и вывести в другое поле. так зачем что то куда то возвращать? изменить какую то переменную? ну тогда ее делаете глобальной в функции и изменяете а лучше тогда писать класс тогда глобальные переменные вам будут не нужны.
panama555
Июль 8, 2019 23:48:55
да, хотел изменить переменную и пришлось делать её глобальной.
Но, как я понял из прочитанного, делать переменные глобальными “плохой приём”
Поэтому думал, что есть вариант получить результат с помощью return
@cckyi_boxxx
Июль 9, 2019 03:28:18
лучшим способом будет юзать классы, внутри класса все что привязано к self глобально, но при этом за его пределами - нет.
class demo:
var1 = 1 # это классовая переменная она привязана к self (не уверен что правильно обозвал)
def __init__(self):
self.var2 = 2 # это переменная привязанная к self ее видно из всего класса
var3 = 3 # это локальная переменная метода, ее видно только внутри метода
JOHN_16
Июль 9, 2019 12:04:05
@cckyi_boxxx
это классовая переменная она привязана к self
как раз таки она не привязана к self
С вашими формулировками достоверно не понятно понимаете ли вы разницу между классом и его экземпляром и их пространством имен. Я склоняюсь что скорее нет чем да