PyQt:连接对话框中的按钮

2024-10-01 17:29:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写我的第一个PyQt程序,但是按钮有问题。我读了一些其他的问答,但我没能解决它。在

基本上我有一个带有菜单栏的主窗口。通过单击菜单项“actionSelect”,将打开一个名为SelectFiles的新对话框。它包含一个名为“ChooseDirButton”的按钮,它应该打开selectdirectory小部件并用所选目录更改“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_()

我不能让ChooseDirectory方法在点击“ChooseDirButton”按钮时执行。我试着把它们连接起来,但我不明白正确的语法。此外,ChooseDirectory方法也可能有问题。 我用qtdesigner创建了GUI,并用“importteragui”命令导入它。在


Tags: pathfromimportselfdefselect按钮dialog
1条回答
网友
1楼 · 发布于 2024-10-01 17:29:13

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

实际上,如果没有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_()

相关问题 更多 >

    热门问题