python - PyQt:连接对话框中的按钮

标签 python button pyqt signals-slots

我正在编写我的第一个 PyQt 程序,但我遇到了按钮问题。我阅读了其他一些问答,但无法解决。

基本上我有一个带有菜单栏的主窗口。通过单击菜单项“actionSelect”,将打开一个名为 SelectFiles 的新对话框。它包含一个名为“ChooseDirButton”的按钮,该按钮应打开选择目录小部件并使用所选目录更改“ShowPath”linedit 文本。

我的代码是这样的:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys

import TeraGui

class MainWindow(QMainWindow, TeraGui.Ui_MainWindow):
    path = ""

    def __init__(self, parent=None):       
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.actionSelect.triggered.connect(self.Select)

    def Select(self):
        dialog = QDialog()
        dialog.ui = TeraGui.Ui_SelectFiles()
        dialog.ui.setupUi(dialog)
        dialog.setAttribute(Qt.WA_DeleteOnClose)
        dialog.exec_()

    def ChooseDirectory():
        global path
        path = str(QFileDialog.getExistingDirectory(self, "Select Directory"))
        self.ShowPath.setText(path)

app = QApplication(sys.argv)
form = MainWindow()
form.show()
app.exec_()

我无法在单击按钮“ChooseDirButton”时执行 ChooseDirectory 方法。我试图连接它们,但我不明白正确的语法。此外,ChooseDirectory 方法也可能有问题。 我使用 Qt Designer 创建了 GUI,并使用“import TeraGui”命令将其导入。

最佳答案

看起来您需要为对话框创建一个子类,就像您为主窗口所做的那样。

如果没有你的 ui 模块,我实际上无法测试它,但像这样的东西应该可以工作:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys

import TeraGui

class MainWindow(QMainWindow, TeraGui.Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.actionSelect.triggered.connect(self.Select)

    def Select(self):
        dialog = Dialog(self)
        dialog.exec_()
        self.ShowPath.setText(dialog.path)

class Dialog(QDialog, TeraGui.Ui_SelectFiles):
    def __init__(self, parent=None):
        super(Dialog, self).__init__(parent)
        self.setAttribute(Qt.WA_DeleteOnClose)
        self.setupUi(self)
        self.ChooseDirButton.clicked.connect(self.ChooseDirectory)
        self.path = ''

    def ChooseDirectory(self):
        self.path = str(QFileDialog.getExistingDirectory(
            self, "Select Directory"))

app = QApplication(sys.argv)
form = MainWindow()
form.show()
app.exec_()

关于python - PyQt:连接对话框中的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26757147/

相关文章:

python - 如何通过跳过 NaN 从数组/数据帧中获取第一个和最后一个数字对

wpf - 使用 DataGridTextColumn 验证禁用/启用按钮

python - 更新 PyQt 小部件

python - 我尝试使用 QFileDialog 在 PyQt 上选择一个文件,但它不运行

java - 能否在 Java 中使用类似于关键字 args for python 的概念来最小化访问器方法的数量?

python - 在 pymongo 中搜索正则表达式

python - BNF 可以处理远期消费吗?

android - 在谷歌地图下方创建按钮

javascript 函数在页面加载时调用,而不是在动态生成的表中单击按钮时调用

python - 使用信号和槽在两个小部件之间发送消息