Не удается передать имя пути, созданное из QFileDialog, в QLineEdit в PyQt5 - PullRequest
0 голосов
/ 21 февраля 2020

Я создал окно QDialog с полем QLineEdit и кнопкой Обзор, чтобы передать путь к папке в программу, над которой я работаю, у меня проблема с ней, в основном, в точке запуска программы, путь не был сгенерирован.

Тем не менее, пожалуйста, смотрите мои коды ниже:

def RPA_OCR_module(self):
    # Define the dialog window
    d_width = 500
    d_height = 200
    module_form = QDialog()
    module_form.setGeometry(int((width/2)-(d_width/2)), self.y(), d_width, d_height)
    module_form.setWindowTitle('RPA OCR Module')

    # Define text for text field
    l_col = 20
    element_width = 350
    element_height = 25
    path_field_text = QLabel('Key in the path to working folder', module_form)
    path_field_text.setGeometry(l_col,25, element_width,element_height)
    path_field_text.setFont(QtGui.QFont('Helvetica', 14))
    path_field_text.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
    # Define the text field
    working_folder_path_field = QLineEdit('Default', module_form)
    working_folder_path_field.move(l_col,50)
    working_folder_path_field.resize(element_width,element_height)
    # Define browse button for directory name
    browse_btn = QPushButton('Browse', module_form)
    browse_btn.setGeometry(l_col+element_width+1,48, 119,element_height)
    browse_btn.clicked.connect(self.openDirNameDialog)
    try:
        if QFileDialog.Accepted:
            working_folder_path_field.setText(fileName)
        else:
            pass
    finally:
        pass

    x = module_form.exec_()

def openDirNameDialog(self):
    # options = QFileDialog.Options()
    # options |= QFileDialog.DontUseNativeDialog
    global fileName
    fileName = str(QFileDialog.getExistingDirectory(self, "Select Directory")) # , options=options
    if fileName:
        print(fileName)
        #self.working_folder_path_field.setText(fileName) # This doesn't work, so I commented it out
    else:
        pass

Если у кого-нибудь есть идеи, как это сделать, пожалуйста, дайте мне знать. Спасибо.

1 Ответ

2 голосов
/ 21 февраля 2020

Вам нужно изменить working_folder_path_field на self.working_folder_path_field, чтобы вы могли получить к нему доступ из другой функции. Тогда вам просто нужно позвонить setText(). Вот общий шаблон c для подражания.

class Template(QWidget):

    def __init__(self):
        super().__init__()
        btn = QPushButton('Browse')
        btn.clicked.connect(self.open)
        self.box = QLineEdit()
        vbox = QVBoxLayout(self)
        vbox.addWidget(btn)
        vbox.addWidget(self.box)

    def open(self):
        name = QFileDialog.getExistingDirectory(self, "Select Directory")
        if name:
            self.box.setText(name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...