python - pyqt : How to use a same function to set text of different qt widget?

标签 python qt pyqt4 signals-slots

我对 Qt 和 python 都很陌生。对于大多数人来说,这可能是一个简单的问题,但我在谷歌上找不到它。 我有一个表单,其中包含不同组的“路径和按钮”组合。 单击每个路径将打开 QFileDialog.getOpenFileName() 对话框,并将 Text 设置为 lineEdit。

我的问题是如何编写这样的函数:

QtCore.QObject.connect(btn1, QtCore.SIGNAL("clicked()"), set_widge_text(lineEdit1))
QtCore.QObject.connect(btn2, QtCore.SIGNAL("clicked()"), set_widge_text(lineEdit2))
QtCore.QObject.connect(btn3, QtCore.SIGNAL("clicked()"), set_widge_text(lineEdit3))

在函数中:

def set_widge_text(self, widget_name)
      widget_name.setText("self.fname")

def open_file_dialog(self):
     fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file',
             './')
     self.fname = fname

有什么办法可以实现这个目标吗?我不想只为不同的 lineEdits 编写不同的 set_widge_text() 集,任何帮助将不胜感激。

非常感谢。

最佳答案

使用lambda连接信号:

    btn1.clicked.connect(lambda: self.set_file_name(lineEdit1))
    btn2.clicked.connect(lambda: self.set_file_name(lineEdit2))
    btn3.clicked.connect(lambda: self.set_file_name(lineEdit3))

def set_file_name(self, edit):
    edit.setText(self.open_file_dialog())

def open_file_dialog(self):
    return QtGui.QFileDialog.getOpenFileName(self, 'Open file', './')

关于python - pyqt : How to use a same function to set text of different qt widget?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28831487/

相关文章:

c++ - 外部日志文件为 UTF8 并带有\r\n

python - PyQt 在 2 种布局中显示 1 个小部件?

python - 如何从源代码编译 CPython python 解释器并为其构建安装程序

python - 如何在Python中找到列表中相同的2个项目

python - 尝试定义一个 6 维变量,但我得到了太多值来解包错误

python - 在 QListWidget 上自定义 PyQt 多点触控平移手势

python - Pyinstaller 不能与线程一起正常工作

python - 对值递减的列表运行 for 循环

c++ - Qt 5.2 调用 QTableWidget::update 不会导致 QTableWidget::paintEvent

qt - 如何将自定义 GraphicsItem 集成到 QML 场景中?