• Как в Python передавать объекты из одного модуля в другой?

    budda
    @budda Автор вопроса
    методом тыка, решил вот так (может быть криво):
    поскольку функция authorisate возвращает кортеж объектов
    при вызове функции передал вот такой параметр *vk
    id_from_domain = resolvedomain.resolve_domain('lunev_network', *vk)

    в самой функции вместо жестко заданного аргумента получаю кортеж *args, а потом из него извлекаю нужный объект:
    def resolve_domain(domain, *args):
        vk = args[0]
        resolve_domain = vk.resolveScreenName(screen_name=domain)
    Ответ написан
  • Как в Python & tkinter при использовании MVC создать главное окно программы?

    budda
    @budda Автор вопроса
    Разобрался.

    В примере на github показано взаимодействие двух окон, что несколько специфично, обычно большая часть действий выполняется в главном окне программы. Но поскольку там так задумано (в одном окне две кнопки, изменяющие значение лейбла в другом окне) для реализации независимых окон автору пришлось использовать окна Toplevel. Вот немного о них:

    Марк Лутц Программирование на Python том I: Обычно окна Toplevel используются для реализации многооконных интерфейсов, а также модальных и немодальных диалогов. Они сохраняются до тех пор, пока не будут явно закрыты или пока создавшее их приложение не завершит работу.


    Сколько я не пробовал менять параметры передачи ссылки на главное окно ничего не получалось, пока я не обратил внимание на метод root.withdraw() в файле main.py. Не смотря на название, оказалось, что он срывает окно:

    withdraw() Removes the window from the screen (without destroying it). To redraw the window, use deiconify. When the window has been withdrawn, the state method returns “withdrawn”.


    Но в примере он нужен, что бы скрыть пустое нефункциональное окно root, которое заменяют два независимых окна Toplevel. В моем случае - приложение будет однооконное, поэтому если убрать этот метод, то все сразу начинает работать.

    Рабочий файл main.py выглядит так:

    main.py
    from tkinter import *
    from controllers.MainController import Controller
    
    if __name__ == '__main__':
        root = Tk()
        root.title("PyDOE-tk")    
        app = Controller(root)
        root.mainloop()
    Ответ написан
    Комментировать
  • Как в Python & PyQt5 в панель с вкладками подгружать содержимое вкладки из другого класса?

    budda
    @budda Автор вопроса
    получилось связать вот таким образом:

    file main.py
    class MainWindow(QtWidgets.QMainWindow):
        def __init__(self, parent=None):
            QtWidgets.QMainWindow.__init__(self, parent)
            self.factors_tab = FactorsTab()
            self.table_tab = TableTab()
            # Location of objects Main Window
            self.box = QtWidgets.QVBoxLayout()
            self.tabs = QtWidgets.QTabWidget()
            self.tabs.addTab(self.factors_tab, "Factors")
            self.tabs.addTab(self.table_tab, "Table of coding factors")
            # self.tabs.addTab(self.tab3, "Work Table")
            # self.tabs.addTab(self.tab4, "Calculations")
            self.setCentralWidget(self.tabs)
            self.tabs.setElideMode(QtCore.Qt.ElideLeft)
            self.tabs.setCurrentIndex(0)
            self.tabs.setUsesScrollButtons(True)
            self.tabs.setLayout(self.box)
            self.add_menu()
    
    
    file FactorsTabWidget.py
    class FactorsTab(QtWidgets.QTableView):
        def __init__(self):
            QtWidgets.QTableView.__init__(self, parent=None)
            self.label = QtWidgets.QLabel("Select folder, project file name")
            self.vbox = QtWidgets.QVBoxLayout()
            self.vbox.addWidget(self.label)
            self.frame_factors = QtWidgets.QTableView()
    
            self.table = QtGui.QStandardItemModel(0, 2)
            self.lst1 = ['Дискета', 'Бумага для принтера', 'Барабан для принтера']
            self.lst2 = ["10", "3", "10452048"]
            for row in range(0, 3):
                item1 = QtGui.QStandardItem(self.lst1[row])
                item2 = QtGui.QStandardItem(self.lst2[row])
                self.table.appendRow([item1, item2])
            self.table.setHorizontalHeaderLabels(['Factor Name', 'Кол-во'])
            self.frame_factors.setModel(self.table)
    
            self.vbox.addWidget(self.frame_factors)
            self.setLayout(self.vbox)
    Ответ написан
    Комментировать
  • Какие есть хорошие книги по PyQT5, с чего начать учить его?

    На русском лучшая книга: Прохоренок Н. А. Python 3 и PyQt. Разработка приложений
    Купил на litres в эл. виде - там качественный pdf с рабочим оглавлением
    у него к книге есть листинги (нужно скачивать отдельно), там куча примеров именно по PyQt5, а в книге по PyQt4
    Ответ написан
    1 комментарий
  • Выбираю планшет: несколько вопросов по iOS и iPad

    budda
    @budda Автор вопроса
    Вот нашел для себя реальных претендентов, которые могут тягаться по цене с iPad 2 на данный момент 29.05.2012 времени на просторах Украины:
    10"
    Samsung Galaxy Tab II 10.1 Wi-Fi (GT-P5110) ??? пока нет поставок
    Acer Iconia Tab A200 8GB такой цене
    7"
    Samsung Galaxy Tab II 7.0 Wi-Fi (GT-P3110) 2700 грн. (332.60 $)
    Acer Iconia Tab A100 по такой цене

    Кстати если есть граждане с Украины? подскажите о репутации магазинов tehnohata.ua, notus.com.ua, stylus.com.ua тут цены подозрительно низкие
    Ответ написан
  • Выбираю планшет: несколько вопросов по iOS и iPad

    budda
    @budda Автор вопроса
    Был сегодня в Comfy.
    Пощупал iPad, SGT, Acer A100, Lenovo K1.
    Планшеты видел в живую первый раз.
    Начал с iPad. Очень понрависля чувствительный тач. Работает даже от легкого касания. Действительно, интерфейс работает очень мягко и плавно. На нем хочется работать. Запустил Safari, открыл 4pda.ru поскролил страницы, походил по ссылкам. По ссылке из википедии закачал PDF. Открылся он прямо в браузере. Скролился хорошо, плавно без рывков.
    Потом перешел к SGT и Lenovo K1.
    В SGT зашел на fs.ua, выбрал фильм, решил онлайн посмотреть:), а вот на тебе вместо плеера черный прямоугольник, перегрузил страницу не помогло. Пока перешел к леново, налетела школота и заняла SGT.
    Загрузил PDF в леново, по той же ссылке: файл не открылся, а просто скачался. По ссылке в чем то там открыл, после того как оно просилось регистрироваться, я отнекивался. Скрол не понравился, как то рывками. Зум после щипка при попытке переместится иногда пропадал, т.е вместо перемещения сбрасывался на первоначальный.
    Может там оперативка была забита и нужно было ребутнутся? За день щупающих та ходит немеряно.

    Перешел к Acer. И тут я обнаружил, что забыл очки. Стенд с планшетами чуть ниже пояса. При работе с предшественниками я немного нагибался, просто, что бы достать. Теперь же нагнутся пришлось посильнее, для моего зрения комфортное расстояние для такого экрана не более 50-60 без очков.
    Acer тупил как на страничках, так и с PDFкой. Понял, что авторы дешевых и китайских планшетов имеют в виду под словом фризится :)
    Может на 4-ом андрюше все по другому, все более плавно?

    Хотя iPad произвел таки на меня очень приятное впечатление, нашел и ложку дегтя: странички в Safari почему то при переключении перезагружались, это печально. Надеюсь они грузятся из кеша? То есть просто переключится между вкладками, например, что бы скопипастить текст без перезагрузки страниц не получиться?
    Вот допустим открыл я в 1-ой вкладке топик на хабре, набрал часть коммента, решил ссылку вставить. Открываю 2-ую вкладку, перехожу, ну допустим в веб-EverNote, копирую ссылку, возвращаюсь в первую вкладку. Там не отправленный коммент в форме пропадет? Ведь если страница перегружается все сбросится?
    Зато в хроме на acer оказалось, что переключатся между вкладками так же удобно как и на десктопе.

    В общем если бы я пришел в магазин ничего абсолютно не зная о планшетах, но с целью купить, то мой выбор был бы однозначно iPad.

    Продавец сказал, что с планшетами продажи не прут (город у нас 350 тыс. населения). Ipad-ы берут по 2-3 в день, SGS по 1-2 в неделю. Взяли несколько леново и пару асеров. 3-и iPad выложат на витрину только после распродажи 2-ых.

    Так ничего и не решил.
    Пока подожду.
    Ответ написан
  • Выбираю планшет: несколько вопросов по iOS и iPad

    budda
    @budda Автор вопроса
    Не так страшен iOS как кажется :)
    В общем я понял, что для моих скромных нужд подойдет планшет и на iOS и на Android. Потому как для меня основными функциями являются серфинг и чтение книг — обе системы без проблем с такими задачами справятся.
    Для более сложных задач есть ПК и нетбук.
    Теперь нужно с диагональю экрана: 7, 9 или 10". Придется сходить в магазин и посмотреть вживую на устройства.
    Поскольку я близорукий смущает меня 7".
    Ну и нужно получить какие то субъективные впечатления. Как не странно, но самое сильное субъективное впечатление почему то на меня производит именно iPad. Хотя дизайн и экран того же Samsung объективно не хуже.
    Вряд ли это воздействие рекламы — телевизор не смотрю.
    Так или иначе все равно с чего то нужно будет начать, а потом можно будет и сравнивать платформы. Заочно оценить такие вещи не получиться.
    Ответ написан
  • Выбираю планшет: несколько вопросов по iOS и iPad

    budda
    @budda Автор вопроса
    Спасибо всем ответившим и тем кто еще ответит :)! Прочитав первые несколько комментариев для себя относительно iPad вывел такое резюме:

    1. Покупая «серый» лишусь гарантии.
    2. Покупка в торговой сети +100$ к стоимости :( это плохо
    3. Проблемы с видео решаемы.
    4. На AppStore можно регистрироваться, но моя зарплатная кредитка для интернет платежей заблокирована банком. Думаю пойдет виртуальна карточка киви, я ей за турбопринт заплатил.
    5. Софт до 10$ покупать готов как для iOS, так и для Android. Например, у меня древний принтер Canon iP1500 (зато картридж можно заправлять сколько нужно, просто шприцем) под Ubuntu 11.10 перестал работать, пришлось купить TurboPrint — позволяет не только печатать, но и полноценно обслуживать принтер.

    *6. Остается вопрос по чтению djvu. Почему то технари ем редко пользуются. А у меня 90% книг в нем. Причем некоторые книги сам оцифровываю и перевожу в djvu из за его заточенности под сканы компактности формата.
    Ответ написан