2013-03-10 30 views
0

我是Python編程新手,因爲這個問題我無法前進。PySide,信號和插槽[NameError:globale name'methodName'未定義]

我的代碼是上面:

#!/usr/bin/python3 
# -*- coding: utf-8 -*- 
""" 
spike 1 
9.03.2012 
Kevin 
""" 

import sys 

from PySide.QtCore import * 
from PySide.QtGui import * 

class GuiRenamator(QWidget): 

    def __init__(self): # constructeur 

     super(GuiRenamator, self).__init__() # je ne sais pas ce que c'est 
     self.contenuGui() 

    def dialogTest(self): 
     dial_1 = QDialog() 
     dial_1.setWindowTitle("Voici ce qui est écrit") 
     text_dial_1 = QTextEdit() 

     vblay_dial = QVBoxLayout() 
     vblay_dial.addWidget(text_dial_1) 

     self.setLayout(vblay_dial) 

     # a bit of code 
     if contenuGui.chk_ancienNom.isChecked(): 
      text_dial_1.append("- ajouter ancien nom") 

     if contenuGui.chk_increment.isChecked(): 
      text_dial_1.append("- ajouter incrément") 

     if contenuGui.chk_dateCreation.isChecked(): 
      text_dial_1.append("- ajouter date de création") 

     dial_1.show() 

    def contenuGui(self): 

     lbl_nomDossier = QLabel("Nom du dossier: ") 
     txt_nomDossier = QTextEdit() 
     btn_selecDossier = QPushButton("+") 
     chk_ancienNom = QCheckBox() 
     chk_increment = QCheckBox() 
     chk_dateCreation = QCheckBox() 
     btn_ok = QPushButton("OK") 
     **btn_ok.clicked.connect(dialogTest)** 
     lbl_log = QLabel("Logs") 
     txt_log = QTextEdit() 

     # Layouts 
     hblay_1 = QHBoxLayout() 
     hblay_1.addWidget(btn_selecDossier) 
     hblay_1.addWidget(lbl_nomDossier) 
     hblay_1.addWidget(txt_nomDossier) 

     flay_2 = QFormLayout() 
     flay_2.addRow("Ancien nom", chk_ancienNom) 
     flay_2.addRow("Incrément", chk_increment) 
     flay_2.addRow("Date de création", chk_dateCreation) 

     vblay_main = QVBoxLayout() 
     vblay_main.addLayout(hblay_1) 
     vblay_main.addLayout(flay_2) 
     vblay_main.addWidget(btn_ok) 
     vblay_main.addWidget(lbl_log) 
     vblay_main.addWidget(txt_log) 

     self.setLayout(vblay_main) 

     self.setGeometry(300, 300, 300, 150) 
     self.setWindowTitle("Ranamator") 
     self.show() 


def main(): 

    app = QApplication(sys.argv) 
    gui = GuiRenamator() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 

當我運行該腳本,下面的消息顯示:

Traceback (most recent call last): 
    File "./layout_spike_1.py", line 90, in <module> 
    main() 
    File "./layout_spike_1.py", line 86, in main 
    gui = GuiRenamator() 
    File "./layout_spike_1.py", line 20, in __init__ 
    self.contenuGui() 
    File "./layout_spike_1.py", line 54, in contenuGui 
    btn_ok.clicked.connect(dialogTest) 
NameError: global name 'dialogTest' is not defined 

當我評論行:btn_ok.clicked.connect(dialogTest) 它工作正常,但我無法連接QPushButtondialogTest方法。

我提前感謝你。

乾杯,

凱文

回答

0

更換btn_ok.clicked.connect(self.dialogTest)

+0

該行它運作良好,非常感謝你! – Kevin 2013-03-10 02:42:15

+0

非常歡迎。 – 2013-03-10 02:48:54

+0

@Kevin如果這是正確的答案,請選中它旁邊的複選標記以結束該問題。 – 2013-03-10 07:22:30