簡體   English   中英

PyQt:連接對話框中的按鈕

[英]PyQt: Connecting a button in a dialog

我正在編寫我的第一個PyQt程序,但我的按鈕有問題。 我讀了一些其他問答,但我無法解決。

基本上我有一個帶菜單欄的主窗口。 通過單擊菜單項“actionSelect”,將打開一個名為SelectFiles的新對話框。 它包含一個名為“ChooseDirButton”的按鈕,該按鈕應打開select目錄小部件並使用所選目錄更改“ShowPath”內襯文本。

我的代碼看起來像這樣:

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_()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM