我试图从“浏览文件夹”对话框返回路径。在
我尝试过将实例对象甚至属性传递给调用并在那里设置它:
self.browseBtn.clicked.connect(myExporter.browseFolder(self))
或者
self.browseBtn.clicked.connect(myExporter.browseFolder(self.path))
但这行不通。它会导致浏览器对话框在加载后立即弹出打开,然后一旦您选择了一个文件夹,它就会出现错误:Failed to connect signal clicked()。
我尝试将点击的呼叫设置为返回,但没有成功:
result = self.browseBtn.clicked.connect(myExporter.browseFolder)
在处理处理UI和逻辑的独立类时,有人能告诉我如何返回值吗?也。。。像这样把他们分开是不是不好?我知道如果我把所有的东西都放在一个python文件中,我可能很容易解决这个问题,但我认为这是不合适的。在
这是我的ui文件(用户界面)公司名称:
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)
这是我的出口商档案(出口商.py)公司名称:
^{pr2}$这是我的加载/测试文件(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_()
把它们放在单独的文件中并不一定是坏事。为某些小部件创建一个单独的文件是一件好事,特别是如果这些小部件可以重用的话。在
我希望我的主文件有一个QMainWindow类。在
在
if __name__ == "__main__"
中包装应用程序功能可防止在另一个文件尝试导入此文件时运行此代码。在信号(已单击self.browserBtn)调用回调方法。在python中,一切都是一个对象。在
^{pr2}$我的函数是一个对象。
self.browseBtn.clicked.connect(my_func)
将myfunc作为变量传递给稍后调用。在当
self.browserBtn.clicked.emit()
发生时(在用户单击时),这与调用连接的函数my_func()
相同。其他信号可能会将值传递给回调函数self.lineEdit.textChanged.connect(my_func)
calls“my_func(new_text)”你想让你的函数为你调用一切。在
结构
我想我不完全理解你想达到什么目的,但我可以提出以下解决办法。在
出口商.py
对话框.py(主界面)
^{pr2}$主.py
这样你仍然有三个文件,但是py对话框进口出口商.py而不是主.py同时导入它们。在
至于从信号返回值,我不知道;我认为信号是空的(不返回值)。在
信号通过其形式参数将参数传递给插槽。通常时隙的参数与信号对应的插槽相同或更少。是插槽返回值。在
相关问题 更多 >
编程相关推荐