Форум сайта python.su
Доброго времени суток
Вопрос явно ламерский, но своими силами разобраться не получается
Имеется форма, на которой:
lineEdit - 1 шт.
pushButton - 2 шт.
Задача формы - позволить выбрать путь к каталогу нажатием одной кнопки; вывести путь в текстовое поле; конвертировать docx в doc внутри каталога
Код (орфография и пунктуация полностью сохранены):
from PyQt5 import QtWidgets import d2 class ExampleApp(QtWidgets.QMainWindow, d2.Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) self.pushButton.clicked.connect(self.browseFolder) self.pushButton_2.clicked.connect(self.runConvert) def browseFolder(self): directory = QtWidgets.QFileDialog.getExistingDirectory(self, 'Выберите папку') if directory: #self.lineEdit.setText(directory) return directory #global directory def convertDocs(self, directory): import win32com.client as win32 import os #directory = self.browseFolder() print(directory) os.chdir(directory) word = win32.Dispatch('Word.Application') for file_name in os.listdir(os.getcwd()): if file_name.endswith('docx'): fn = os.path.join(os.getcwd(), file_name) wDoc = word.Documents.Open(fn) wDoc.SaveAs2(fn[0:-4] + 'doc', FileFormat = 0) wDoc.Close() word.Quit() def runConvert(self): self.convertDocs(self.browseFolder()) def m2(): app = QtWidgets.QApplication(sys.argv) window = ExampleApp() window.show() app.exec_() if __name__ == '__main__': m2()
global directory
Отредактировано Ethex (Июнь 13, 2018 14:09:14)
Офлайн
self.directory = QtWidgets.QFileDialog.getExistingDirectory(self, 'Выберите папку') self.lineEdit.setText(self.directory) ....
Офлайн
RodegastТакой способ срабатывал у меня
self.lineEdit.setText(self.directory)
Офлайн
Ethexесли уж так хочеццо через return
А с помощью return?
def selectFolder(self): self.lineEdit.setText(self.browseFolder())
[code python][/code]
Отредактировано PEHDOM (Июнь 13, 2018 15:44:48)
Офлайн
PEHDOM, раз так, то меня устроит мой изначальный вариант
def browseFolder(self): directory = QtWidgets.QFileDialog.getExistingDirectory(self, 'Выберите папку') if directory: self.lineEdit.setText(directory) def convertDocs(self, directory): import win32com.client as win32 import os directory = self.lineEdit.text() print(directory) os.chdir(directory) word = win32.Dispatch('Word.Application') for file_name in os.listdir(os.getcwd()): if file_name.endswith('docx'): fn = os.path.join(os.getcwd(), file_name) wDoc = word.Documents.Open(fn) wDoc.SaveAs2(fn[0:-4] + 'doc', FileFormat = 0) wDoc.Close() word.Quit()
Отредактировано Ethex (Июнь 13, 2018 15:51:38)
Офлайн
Ethexну в данном случае это оправдано, так как пользователь может не нажимать кнопку “обзор”, а ввести путь вручную или скопировать его из буфера обмена. А если хотите чтобы путь хранился в неком атрибуте self.directory то придеться вешать на сигнал textChanged лайнЕдита процедуру которая будет обновлять
Просто почему-то подумал, что обращение к элементам управления не очень грамотно
[code python][/code]
Офлайн