Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 16, 2009 16:41:17

DHT
От:
Зарегистрирован: 2009-09-24
Сообщения: 119
Репутация: +  0  -
Профиль   Отправить e-mail  

Проект с множеством окон: оптимальная структура, обращение к объектам?

Всем привет!
Не так давно изучаю Python, точнее пытюсь сразу же перенести свой проект с Delphi на Python, но возникли некоторые вопросы.

Допустим в Делфи когда создаешь новую форму, то для доступа ко всем объектам этой формы нужно прописать модуль в uses, а затем использовать конструкцию FormName.ObjectName.Attribute. В 2-х словах плиз как правильно это сделать в Питоне?

Сейчас новые окна создаются при помощи объектов Toplevel(root) в главном модуле и по скольку все процедуры записаны в одном модуле, то проблем с доступом к объектам нет, но как разнести создание окон в отдельные модули и при этом иметь доступ к атрибутам объекта?



Офлайн

#2 Окт. 16, 2009 18:09:21

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Проект с множеством окон: оптимальная структура, обращение к объектам?

Они просто есть - без объявлений :)
Называется Duck Typing



Офлайн

#3 Окт. 16, 2009 18:29:45

DHT
От:
Зарегистрирован: 2009-09-24
Сообщения: 119
Репутация: +  0  -
Профиль   Отправить e-mail  

Проект с множеством окон: оптимальная структура, обращение к объектам?

погугил на тему “Duck Typing” и что-то не понял как привязать это к ответу на мой вопрос. Вы уж простите если не понял с полуслова, можно немного подробнее о моей задаче?



Офлайн

#4 Окт. 17, 2009 00:13:32

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Проект с множеством окон: оптимальная структура, обращение к объектам?

На самом деле это совсем просто.
У вас есть класс

class A(object):
def f(self):
pass
есть экземпляр этого класса
a = A()
теперь вы вызываете a.f()
что происходит?
питон берет у объекта a атрибут по имени f. Получает bound method object. Потом применяет круглые скобки (вызывает метод __call__). И все. Объявление класса для этого не требуется.

Примерно так же работает COM IDispatch интерфейс.



Офлайн

#5 Окт. 17, 2009 08:58:23

Griffon
От: Ukrain, Zaporozhie
Зарегистрирован: 2009-03-04
Сообщения: 324
Репутация: +  11  -
Профиль   Отправить e-mail  

Проект с множеством окон: оптимальная структура, обращение к объектам?

Вы разнесёте не обьекты, а классы. Сами же обьекты, наиболее вероятно, вы будете создавать внутри одного и того же модуля.



Офлайн

#6 Окт. 19, 2009 01:01:48

DHT
От:
Зарегистрирован: 2009-09-24
Сообщения: 119
Репутация: +  0  -
Профиль   Отправить e-mail  

Проект с множеством окон: оптимальная структура, обращение к объектам?

Ага теперь понял… понял, что вопрос сформулировал неверно :)
Объясню на примере на чем зациклился:


1. Есть главное окно со своими виджетами

from tkinter import *

root = Tk()

label_note = ttk.Label(root)
label_note['text'] = u'примечение'
label_note.pack()

root.mainloop()
2. Есть еще одно окно

toplevel_change = Toplevel(root)
toplevel_change.transient(root)
в котором есть кнопка к которой привязана команда редактирования атрибута ‘text’ виджета label_note из главного окна

button_change = ttk.Button(toplevel_change, command=change_label)
button_change['text'] = 'Change'
button_change.pack()
Все это разумется схематически. Так как вынести создание 2-го окна и все функции, привязываемые к событиям в этом окне, в отдельный модуль?



Отредактировано (Окт. 19, 2009 01:04:02)

Офлайн

#7 Окт. 24, 2009 09:23:52

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2740
Репутация: +  183  -
Профиль   Отправить e-mail  

Проект с множеством окон: оптимальная структура, обращение к объектам?

Просто передавай объект основного окна второму как параметр, а во втором окне обращайся не к текущему объекту (self), а к объекту основного окна.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version