Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 26, 2022 07:15:38

jeyson77777
Зарегистрирован: 2022-11-26
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Доступ к переменной класса окна

Здравствуйте, уважаемые программисты!
Изучаю Питон совсем недавно.
Возникла проблема. Есть модуль main из которого создается окно с полем для ввода и кнопки. При нажатии на кнопку надо записать значение из поля для ввода в переменную класса namefile, вызвать функцию из внешнего модуля и в этой функции получить значение переменной. Мои знания не позволили реализовать задачу.
Спасибо!

main.py

 from okno import Window
window1 = Window(500,500,"Проверка атрибутов")
window1.run()

Okno.py
 from tkinter import *
import test
class Window:
    def __init__(self, width, height, title="Окно программы", resiziable=(False, False)):
        self.root = Tk()
        self.root.title(title)
        self.root.geometry(f"{width}x{height}+200+200")
        self.root.resizable(resiziable[0], resiziable[1])
        self.Entry_namefile = Entry(self.root)
        self.Entry_namefile.insert(0, "Результат")
        self.namefile=""
    
    def run(self):
        self.draw_widgets()
        self.root.mainloop()
    def draw_widgets(self):
        self.Entry_namefile.pack(anchor=NW)
        Button(self.root, text="Начать проверку", command=self.button_action).pack(anchor=NW)
    def button_action(self):
        self.namefile=self.Entry_namefile.get()
        test.pr()
    def get_name_file(self):
        return self.namefile

test.py
 import okno
def pr():
    c=okno.Window.get_name_file()

Отредактировано jeyson77777 (Ноя. 26, 2022 07:16:35)

Офлайн

#2 Ноя. 26, 2022 09:45:05

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Доступ к переменной класса окна

Сделай у функции test.pr() аргумент текстовый. И подавай в вызов test.pr(), который находится в button_action(), этот аргумент.

jeyson77777
Изучаю Питон совсем недавно.
jeyson77777
Мои знания не позволили реализовать задачу.
Да, тебя ещё много проблем ждёт. Если методом тыка изучаешь, будешь долго изучать. Например, с чего ты взял, что с Entry надо работать напрямую? Сейчас надо у неё переменную строковую присоединять StringVar. И чтобы это узнать, надо читать книжки.

То есть в Entry агрегируется строковая переменная StringVar и потом с этой переменной ты и работаешь. А у этой переменной как раз и есть методы set() и get(). Там не надо никакой insert() в позицию делать.

jeyson77777
Доступ к переменной класса окна
Никаких переменных класса у тебя нет. Тоже надо книжки читать, чтобы это знать. Есть переменные класса, а есть переменные экземпляра класса. И это разные вещи. Вот у тебя только переменные экземпляра есть. Поэтому ты и не можешь доступ к ним получить, потому что просто неправильно всё делаешь.



Отредактировано py.user.next (Ноя. 26, 2022 09:53:11)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version