Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PyQt: QFileDialog не в стиле WinXP 
:(
    Опции темы
batigoal
Дата 13.1.2010, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: нет
Всего: 151



Всем привет,

пытаюсь слепить GUI-приложение на PyQT. Использовал QT Designer для создания диалога, диалог в стиле WinXP. На одну из кнопок повесил открытие QFileDialog и опппа! - он в стиле Classic.

Вот тут советуют создать файлы .manifest и .rc. Это я сделал. Но затем ссылку на них надо добавить в файл .pro, а такого у меня и нету. И вообще, я подозреваю, что это для плюсов, а не для Питона инструкция.

Иллюстрация:

user posted image

Если нужен код - см. ниже.

photo_import.py
Код

import os
import shutil
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import QFileDialog, QDialog 

class ImportController:
    def __init__(self,*args):
        src_folder = "H:\\DCIM\\100CANON"
        photos_folder = "F:\\photos\\2010"
        name = ""      

    def import_images(self, start_photo_idx, end_photo_idx):
    # TODO: check name existance
        dst_folder = self.photos_folder + "\\" + self.name
        jpg_dst_folder = dst_folder + "\\" + "jpeg"
        raw_dst_folder = dst_folder + "\\" + "raw"
        processed_dst_folder = dst_folder + "\\" + "processed"
        res_dst_folder = dst_folder + "\\" + "res"

        self.create_folders((dst_folder, jpg_dst_folder, raw_dst_folder, processed_dst_folder, res_dst_folder))

        # copy images
        for file_name in range(start_photo_idx, end_photo_idx):
            shutil.copy("IMG_" + file_name + ".JPG", jpg_dst_folder)
            shutil.copy("IMG_" + file_name + ".CR2", raw_dst_folder)

    def create_folders(self, folders):
        for dir in folders:
            os.makedirs(dir)


    def select_from_folder_handler(self):
        print("pressed")

    def select_to_folder_handler(self):
        print("pressed")

    def select_start_photo_handler(self):
        # создание того самого диалога
        print(QFileDialog.getOpenFileName(self.dialog, "Select start photo", ""))

    def select_end_photo_handler(self):
        print("pressed")


# далее идет класс окна, сгенерирован дизайнером

class Ui_ImportDialog(QDialog):
    def setupUi(self, ImportDialog, importController):
        ImportDialog.setObjectName("ImportDialog")
        ImportDialog.resize(516, 229)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(ImportDialog.sizePolicy().hasHeightForWidth())
        ImportDialog.setSizePolicy(sizePolicy)
        ImportDialog.setMinimumSize(QtCore.QSize(516, 229))
        ImportDialog.setMaximumSize(QtCore.QSize(516, 229))
        ImportDialog.setSizeGripEnabled(False)
        self.buttonBox = QtGui.QDialogButtonBox(ImportDialog)
        self.buttonBox.setGeometry(QtCore.QRect(60, 190, 441, 32))
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.from_label = QtGui.QLabel(ImportDialog)
        self.from_label.setGeometry(QtCore.QRect(10, 10, 71, 16))
        self.from_label.setObjectName("from_label")
        self.from_line = QtGui.QLineEdit(ImportDialog)
        self.from_line.setGeometry(QtCore.QRect(80, 10, 301, 20))
        self.from_line.setObjectName("from_line")
        self.to_label = QtGui.QLabel(ImportDialog)
        self.to_label.setGeometry(QtCore.QRect(10, 50, 71, 16))
        self.to_label.setObjectName("to_label")
        self.to_line = QtGui.QLineEdit(ImportDialog)
        self.to_line.setGeometry(QtCore.QRect(80, 50, 301, 20))
        self.to_line.setObjectName("to_line")
        self.start_photo_label = QtGui.QLabel(ImportDialog)
        self.start_photo_label.setGeometry(QtCore.QRect(10, 100, 71, 16))
        self.start_photo_label.setObjectName("start_photo_label")
        self.start_photo_line = QtGui.QLineEdit(ImportDialog)
        self.start_photo_line.setGeometry(QtCore.QRect(80, 100, 301, 20))
        self.start_photo_line.setObjectName("start_photo_line")
        self.end_photo_label = QtGui.QLabel(ImportDialog)
        self.end_photo_label.setGeometry(QtCore.QRect(10, 140, 71, 16))
        self.end_photo_label.setObjectName("end_photo_label")
        self.end_photo_line = QtGui.QLineEdit(ImportDialog)
        self.end_photo_line.setGeometry(QtCore.QRect(80, 140, 301, 20))
        self.end_photo_line.setObjectName("end_photo_line")
        self.from_selection_button = QtGui.QPushButton(ImportDialog)
        self.from_selection_button.setGeometry(QtCore.QRect(400, 10, 75, 23))
        self.from_selection_button.setObjectName("from_selection_button")
        self.to_selection_button = QtGui.QPushButton(ImportDialog)
        self.to_selection_button.setGeometry(QtCore.QRect(400, 50, 75, 23))
        self.to_selection_button.setObjectName("to_selection_button")
        self.start_photo_selection_button = QtGui.QPushButton(ImportDialog)
        self.start_photo_selection_button.setGeometry(QtCore.QRect(400, 100, 75, 23))
        self.start_photo_selection_button.setObjectName("start_photo_selection_button")
        self.end_photo_selection_button = QtGui.QPushButton(ImportDialog)
        self.end_photo_selection_button.setGeometry(QtCore.QRect(400, 140, 75, 23))
        self.end_photo_selection_button.setObjectName("end_photo_selection_button")

        self.retranslateUi(ImportDialog)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), ImportDialog.accept)
        QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), ImportDialog.reject)
        QtCore.QObject.connect(self.from_selection_button, QtCore.SIGNAL("clicked()"), importController.select_from_folder_handler)
        QtCore.QObject.connect(self.to_selection_button, QtCore.SIGNAL("clicked()"), importController.select_to_folder_handler)
        QtCore.QObject.connect(self.start_photo_selection_button, QtCore.SIGNAL("clicked()"), importController.select_start_photo_handler)
        QtCore.QObject.connect(self.end_photo_selection_button, QtCore.SIGNAL("clicked()"), importController.select_end_photo_handler)
        QtCore.QMetaObject.connectSlotsByName(ImportDialog)

    def retranslateUi(self, ImportDialog):
        ImportDialog.setWindowTitle(QtGui.QApplication.translate("ImportDialog", "Import photos", None, QtGui.QApplication.UnicodeUTF8))
        self.from_label.setText(QtGui.QApplication.translate("ImportDialog", "Import from:", None, QtGui.QApplication.UnicodeUTF8))
        self.from_line.setText(QtGui.QApplication.translate("ImportDialog", "H:\\DCIM\\100CANON", None, QtGui.QApplication.UnicodeUTF8))
        self.to_label.setText(QtGui.QApplication.translate("ImportDialog", "Copy to:", None, QtGui.QApplication.UnicodeUTF8))
        self.to_line.setText(QtGui.QApplication.translate("ImportDialog", "F:\\photos\\2010\\", None, QtGui.QApplication.UnicodeUTF8))
        self.start_photo_label.setText(QtGui.QApplication.translate("ImportDialog", "Start photo:", None, QtGui.QApplication.UnicodeUTF8))
        self.end_photo_label.setText(QtGui.QApplication.translate("ImportDialog", "End photo:", None, QtGui.QApplication.UnicodeUTF8))
        self.from_selection_button.setText(QtGui.QApplication.translate("ImportDialog", "Select...", None, QtGui.QApplication.UnicodeUTF8))
        self.to_selection_button.setText(QtGui.QApplication.translate("ImportDialog", "Select...", None, QtGui.QApplication.UnicodeUTF8))
        self.start_photo_selection_button.setText(QtGui.QApplication.translate("ImportDialog", "Select...", None, QtGui.QApplication.UnicodeUTF8))
        self.end_photo_selection_button.setText(QtGui.QApplication.translate("ImportDialog", "Select...", None, QtGui.QApplication.UnicodeUTF8))


Запуск:
Код

import sys
from PyQt4 import QtGui
from photo_import import Ui_ImportDialog, ImportController

app = QtGui.QApplication(sys.argv)
window = QtGui.QDialog()
controller = ImportController()
ui = Ui_ImportDialog()
controller.dialog = ui
ui.setupUi(window, controller)

window.show()
sys.exit(app.exec_())


Спасибо

P.S. если есть замечания по стилю, с удовольствием выслушаю


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Разработка GUI | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.