2017-08-13 22 views
0

PyQT4コードをPyQt5に変換しようとしていますが、新しいスタイルの接続信号が必要です。 私が使用:予想通りPyQt5ダイアログがメインウィンドウを閉じます

self.connect(okButton, SIGNAL("clicked()"),form, SLOT("accept()")) 
self.connect(cancelButton, SIGNAL("clicked()"),form, SLOT("reject()")) 

すべての作品 - [OK]をクリックするか、[キャンセルにより、ダイアログウィンドウが閉じます。新しいスタイルのsygnalsでは(私は私が何か間違ったことをやっていると思います)

okButton.clicked.connect(self.accept) 
cancelButton.clicked.connect(self.reject) 

OK /キャンセルをクリックした後、メインウィンドウが閉じ、ダイアログがご利用いただけます。間違いなく何が起こるべきであるか。

私は間違っていますか?

import sys 
from PyQt5.QtWidgets import QDialog, QApplication, QPushButton, QLabel, QHBoxLayout, QVBoxLayout, QGridLayout 
# from PyQt4.QtCore import * 
# from PyQt4.QtGui import * 

class Form(QDialog): 
    def __init__(self, parent=None): 
     super(Form, self).__init__(parent) 
     myButton = QPushButton("open window") 
     self.myFirstLabel = QLabel("First Window") 
     layout = QVBoxLayout() 
     layout.addWidget(myButton) 
     layout.addWidget(self.myFirstLabel) 
     self.setLayout(layout) 
     myButton.clicked.connect(self.openNewWindow) 
     self.setWindowTitle("SecondWindowTest") 

    def openNewWindow(self): 
     myLabel = QLabel("Second Window") 
     okButton = QPushButton("&OK") 
     cancelButton = QPushButton("Cancel") 
     buttonLayout = QHBoxLayout() 
     buttonLayout.addStretch() 
     buttonLayout.addWidget(okButton) 
     buttonLayout.addWidget(cancelButton) 
     layout = QGridLayout() 
     layout.addWidget(myLabel, 0, 0) 
     layout.addLayout(buttonLayout, 1, 1, 1, 2) 
     form = QDialog() 
     form.setLayout(layout) 

     okButton.clicked.connect(self.accept) 
     cancelButton.clicked.connect(self.reject) 
     # self.connect(okButton, SIGNAL("clicked()"),form, SLOT("accept()")) 
     # self.connect(cancelButton, SIGNAL("clicked()"),form, SLOT("reject()")) 

     form.setWindowTitle("Second Window") 
     if form.exec_(): 
      self.myFirstLabel.setText('OK was pressed') 

app = QApplication(sys.argv) 
form = Form() 
form.show() 
app.exec_() 
+0

あなたの問題や質問は何ですか? – eyllanesc

+0

問題は、ダイアログがメインウィンドウを閉じることです。わかりやすくするためにメインを編集しました。 – tmdag

答えて

1

次の接続の同等:接続の新しいスタイルで

self.connect(okButton, SIGNAL("clicked()"),form, SLOT("accept()")) 
self.connect(cancelButton, SIGNAL("clicked()"),form, SLOT("reject()")) 

は次のとおりです。

okButton.clicked.connect(form.accept) 
cancelButton.clicked.connect(form.reject) 
+0

ありがとう!すべて今良い:) – tmdag

関連する問題