gpt4 book ai didi

python - Pyqt4:通过文件浏览小部件编辑 QLineEdit 文本并将其作为参数发送

转载 作者:太空宇宙 更新时间:2023-11-03 17:13:07 24 4
gpt4 key购买 nike

我正在尝试创建一个应用程序,该应用程序应该允许选择目录,并在按下按钮后将所选路径发送到App类之外的另一个函数。还有一个预定义目录设置为默认路径并显示在 QLineEdit 小部件中。这是我尝试过的:

import os
import sys
from PyQt4 import QtGui
from PyQt4 import QtCore
from functools import partial

class App (QtGui.QMainWindow):

def __init__(self):
super(App, self).__init__()
self.initUI()

def initUI(self):

default_path = os.path.dirname(os.path.abspath(__file__))

def selectDir():
labelSavePath.setText(QtGui.QFileDialog.getExistingDirectory(self,
'Select Dir:'))

self.setFixedSize(450, 150)
self.setWindowTitle('App')

labelSavePath = QtGui.QLineEdit(default_path, self)
labelSavePath.setGeometry(15, 72, 340, 20)
labelSavePath.setAlignment(QtCore.Qt.AlignLeft)
labelSavePath.setReadOnly(True)

btnBrowse = QtGui.QPushButton('Browse', self)
btnBrowse.setGeometry(365, 67, 80, 30)

btnBrowse.clicked.connect(selectDir)

btnStart = QtGui.QPushButton('Start', self)
btnStart.move(345, 115)
btnStart.clicked.connect(partial(startRun,
str(labelSavePath.text())))

self.show()

def startRun(log_path):
print(log_path) #and do smth useful

if __name__ == "__main__":

app = QtGui.QApplication(sys.argv)
w = App()
sys.exit(app.exec_())

但是,无论用户是否更改,log_path 始终等于default_path。我已经寻找答案几个小时了,但仍然没有找到这个错误,因为我是 PyQt 的新手。

我应该如何正确编辑/传递labelSavedPath小部件中的文本,注意可能的更改?

最佳答案

你似乎误解了什么partial做。它允许您调用一个函数,其中一些参数预先填充了固定值 - 这正是您不想要的。使用 lambda 代替:

    btnStart.clicked.connect(lambda: startRun(labelSavePath.text()))

注意:如果您使用的是 Python 3,则无需使用 str() 包装所有内容。

关于python - Pyqt4:通过文件浏览小部件编辑 QLineEdit 文本并将其作为参数发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33900398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com