![](/img/trans.png)
[英]Setting shortcut key for editing text in QLineEdit in Python PyQt4
[英]Pyqt4: Editing QLineEdit text via file browsing widget and sending it as a parameter
我正在嘗試創建一個應允許選擇目錄的應用,並在按下按鈕后將所選路徑發送到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小部件中的文本?
您似乎誤解了部分功能。 它允許您調用帶有某些參數的函數,這些參數的參數預先填充有固定值-這正是您所不想要的。 改用lambda
:
btnStart.clicked.connect(lambda: startRun(labelSavePath.text()))
注意:如果您使用的是Python 3,則無需使用str()
包裝所有內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.