【发布时间】:2016-02-11 01:26:30
【问题描述】:
我正在尝试从浏览文件夹对话框返回路径。
我已经尝试将实例对象甚至属性传递给调用并将其设置在那里:
self.browseBtn.clicked.connect(myExporter.browseFolder(self))
或
self.browseBtn.clicked.connect(myExporter.browseFolder(self.path))
但这不起作用。它会导致浏览器对话框在加载时立即弹出打开,然后一旦您选择了一个文件夹,它就会出错:无法连接信号 clicked()。
我尝试将点击调用设置为返回,但没有成功:
result = self.browseBtn.clicked.connect(myExporter.browseFolder)
当您处理处理 UI 和逻辑的单独类时,有人可以引导我朝着正确的方向返回值吗?另外......像这样分开它们是不好的做法吗?我知道如果我将所有内容都放入一个 python 文件中,我可能很容易解决这个问题,但我认为这是不正确的。
这是我的 ui 文件 (ui.py):
from PySide import QtCore, QtGui
class Ui_Dialog(object):
def __init__(self):
self.path =""
def setupUi(self, Dialog, myExporter):
Dialog.setObjectName("Dialog")
Dialog.resize(382, 589)
...
.......
.............
.................
self.retranslateUi(Dialog)
self.tabWidget.setCurrentIndex(1)
QtCore.QMetaObject.connectSlotsByName(Dialog)
self.browseBtn.clicked.connect(myExporter.browseFolder)
这是我的导出器文件 (exporter.py):
class Exporter(object):
def __init__(self):
...
......
def browseFolder(self):
...
.......
do something
...........
return path
这是我的加载/测试文件 (loadExporter.py):
import ui as interface
import exporter as exporter
from PySide import QtCore, QtGui
app = QtGui.QApplication.instance()
if app is None:
app = QtGui.QApplication(sys.argv)
Dialog = QtGui.QDialog()
myExporter = exporter.Exporter()
myUI = interface.Ui_Dialog()
myUI.setupUi(Dialog, myExporter)
Dialog.show()
app.exec_()
【问题讨论】:
标签: python button pyqt return-value pyside