[英]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.