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

Хотелось бы с примерами.
richagok
Для создания GUI использую tkinter
4kpt
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))
richagok
Да, вы правильно поняли, это я и хочу.

А можете объяснить как это работает?
4kpt
Что работает?
richagok
4kpt
But.bind(“<space>”, lambda evt: call(evt, 12, 11, 10))
4kpt
Все достаточно просто

Если пишем

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.
richagok
А как получить экземпляр класса, который лежит в файле в другой папке не подскажете?
agalen
import sys
sys.path.append( path_to_Code )
import hhh
book = hhh.Book()
richagok
пишу:

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

Выдает: NameError: name ‘Book’ is not defined
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB