Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 10, 2013 21:03:45

richagok
Зарегистрирован: 2013-10-10
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка событий в GUI, пакеты. Помогите!!!

Всем привет! Только-только начал программировать на python, и при попытке сделать что-то посложнее наткнулся на некоторые трудности. Помогите пожалуйста!!!
Вопрос 1. У меня есть такая иерархия директорий на диске D:\\(на прикрепленной картинке). Как сделать так, чтобы можно было в GUI_Frames.py(лежит в GUI) создать объект класса Book() из hhh.py(лежит в Code)? Как вообще это собрать в одно целое? Пишу на PyCharm из-под винды.
Вопрос 2. Как допустим привязать метод того же класса Book(), к кнопочке в GUI_Frames, если он принимает параметры?

Хотелось бы с примерами.

Прикреплённый файлы:
attachment Безымянный.jpg (8,1 KБ)

Офлайн

#2 Окт. 10, 2013 21:26:39

richagok
Зарегистрирован: 2013-10-10
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка событий в GUI, пакеты. Помогите!!!

Для создания GUI использую tkinter

Офлайн

#3 Окт. 11, 2013 01:38:34

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Обработка событий в GUI, пакеты. Помогите!!!

richagok
Для создания GUI использую tkinter
Молодец. Только тема не там :)

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

Второй вопрос простой. Ответ:

def call(ent, data1, data2, data3):
    print data1
But = Tkinter.Button(root, text="Push")
But.bind("<space>", lambda evt: call(evt, 12, 11, 10))



Отредактировано 4kpt (Окт. 11, 2013 02:11:08)

Офлайн

#4 Окт. 11, 2013 01:52:24

richagok
Зарегистрирован: 2013-10-10
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка событий в GUI, пакеты. Помогите!!!

Да, вы правильно поняли, это я и хочу.

А можете объяснить как это работает?

Офлайн

#5 Окт. 11, 2013 01:54:28

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Обработка событий в GUI, пакеты. Помогите!!!

Что работает?



Офлайн

#6 Окт. 11, 2013 02:00:06

richagok
Зарегистрирован: 2013-10-10
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка событий в GUI, пакеты. Помогите!!!

4kpt
But.bind(“<space>”, lambda evt: call(evt, 12, 11, 10))

Офлайн

#7 Окт. 11, 2013 02:15:54

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Обработка событий в GUI, пакеты. Помогите!!!

Все достаточно просто

Если пишем

But.bind("<space>", call(evt, 12, 11, 10))

То получается, что мы связываем событие с объектом результата функции, в которую уже передали три значения. Т.е. событие свзяывается не с функцией, которая должна что-то выполнять, а с объектом ее выполнения.

Если пишем

But.bind("<space>", lambda evt: call(evt, 12, 11, 10))

В этом случае мы связываем событие с объектом функции, а не с ее результатом. Так как функция lambda возвращает объект функцию.

P.S. Поподробней по lambda: М. Лутц 3 издание “Изучаем python” стр 440-446.



Отредактировано 4kpt (Окт. 11, 2013 02:16:17)

Офлайн

#8 Окт. 11, 2013 06:26:46

richagok
Зарегистрирован: 2013-10-10
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка событий в GUI, пакеты. Помогите!!!

А как получить экземпляр класса, который лежит в файле в другой папке не подскажете?

Офлайн

#9 Окт. 11, 2013 09:47:55

agalen
От:
Зарегистрирован: 2011-03-23
Сообщения: 185
Репутация: +  17  -
Профиль   Отправить e-mail  

Обработка событий в GUI, пакеты. Помогите!!!

import sys
sys.path.append( path_to_Code )
import hhh
book = hhh.Book()



Офлайн

#10 Окт. 11, 2013 11:34:20

richagok
Зарегистрирован: 2013-10-10
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка событий в GUI, пакеты. Помогите!!!

пишу:

import sys
sys.path.append('D:\\python\MyProject\Code')
from hhh import *
book = Book()

Выдает: NameError: name ‘Book’ is not defined

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version