
Нелетучий Мыш
   
Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ
Репутация: нет Всего: 151
|
Всем привет, пытаюсь слепить GUI-приложение на PyQT. Использовал QT Designer для создания диалога, диалог в стиле WinXP. На одну из кнопок повесил открытие QFileDialog и опппа! - он в стиле Classic. Вот тут советуют создать файлы .manifest и .rc. Это я сделал. Но затем ссылку на них надо добавить в файл .pro, а такого у меня и нету. И вообще, я подозреваю, что это для плюсов, а не для Питона инструкция. Иллюстрация:  Если нужен код - см. ниже. 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. если есть замечания по стилю, с удовольствием выслушаю
--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ
|