2014-03-05 4 views
1

나는 Python 인터페이스로 링크 된 데이터베이스를 가지고있는 프로젝트에서 일하고 있습니다. (디자인에 Qt Designer를 사용하고 있습니다). 나는Python Qt QMainWindow에서 팝업 QDialog를 여는 방법

Are you sure you want to delete this item?

을 말한다 내가 그것을 누르면있을 때, 그것은 (QDialog를) 팝업을 열어, 내 메인 창 (QMainWindow)에서 삭제 버튼을 갖고 싶어하지만 난 그것을 수행하는 방법 아무 생각이 없습니다.

도움 주셔서 감사합니다.

답변

1
def button_click(): 
    dialog = QtGui.QMessageBox.information(self, 'Delete?', 'Are you sure you want to delete this item?', buttons = QtGui.QMessageBox.Ok|QtGui.QMessageBox.Cancel) 

이 기능을 버튼 클릭 이벤트에 바인딩합니다.

+0

: 대화 = QtGui.QMessageBox.information (자기

이 예를 완료하려면, 당신은 단지 응용 프로그램을 시작하고 창을 보여주기 위해 몇 가지 코드가 필요 .tableViewPatient, '삭제 하시겠습니까?', '이 항목을 삭제 하시겠습니까?', buttons = QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel) TypeError : 인수가 오버로드 된 호출과 일치하지 않습니다. QMessageBox.information (QWidget, QString, QString, QMessageBox.StandardButtons buttons = QMessageBox.Ok, QMessageBox.StandardButton defaultButton = QMessageBox.NoButton) : 인수 1에 예상치 못한 문제가 있습니다. 타입 'PySide.QtGui.QTableView' 나는 그것이 자기로부터의 오류일지도 모른다라고 생각한다? (확실하지 않음) 아직도이 일을 도와 줄 수 있습니까? – user3369214

1

Qt Designer에 "MainWindow"라는 메인 윈도우와 "buttonDelete"라는 버튼이 있다고 가정 해 보겠습니다. 당신이 신호를 처리하고 열립니다 MainWindow 클래스에 메소드를 추가 할 필요가

from PyQt4 import QtCore, QtGui 
from mainwindow_ui import Ui_MainWindow 

class MainWindow(QtGui.QMainWindow, Ui_MainWindow): 
    def __init__(self): 
     QtGui.QMainWindow.__init__(self) 
     self.setupUi(self) 
     self.buttonDelete.clicked.connect(self.handleButtonDelete) 

다음 :

첫 번째 단계는 메인 윈도우 클래스를 설정하고 처리기에 버튼의 클릭 신호를 연결하는 것입니다 대화 상자 :

def handleButtonDelete(self): 
     answer = QtGui.QMessageBox.question(
      self, 'Delete Item', 'Are you sure you want to delete this item?', 
      QtGui.QMessageBox.Yes | QtGui.QMessageBox.No | 
      QtGui.QMessageBox.Cancel, 
      QtGui.QMessageBox.No) 
     if answer == QtGui.QMessageBox.Yes: 
      # code to delete the item 
      print('Yes') 
     elif answer == QtGui.QMessageBox.No: 
      # code to carry on without deleting 
      print('No') 
     else: 
      # code to abort the whole operation 
      print('Cancel') 

여기에는 내장 된 QMessageBox functions 중 하나를 사용하여 대화 상자를 만듭니다. 처음 세 인수는 부모, 제목 및 텍스트를 설정합니다. 다음 두 개의 인수는 표시된 단추 그룹과 기본 단추 (처음에 강조 표시된 단추)를 설정합니다. 다른 단추를 사용하려는 경우 사용 가능한 단추는 here입니다. 내가 당신의 스크립트를 작성할 때이 오류가

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = MainWindow() 
    window.show() 
    sys.exit(app.exec_()) 
+0

는이 오류를 얻을 : 형식 오류가 : 인수가 어떤 과부하 호출 일치하지 않습니다 : QMessageBox.question를 (는 QWidget, QString, QString, QMessageBox.StandardButtons 버튼 = QMessageBox.Ok, QMessageBox.StandardButton defaultButton의 = QMessageBox.NoButton) : 인수 1 예기치 않은 유형 'MyKinectViewer – user3369214

+0

@ user3369214가 있습니다. 내 예제 코드는 정확하다. (필자가 테스트했기 때문에). QMessageBox.question' (필자의 예에서는'self')의 첫 번째 인수는 Qt 위젯이어야합니다. 나는 당신이 보통 파이썬 객체를 대신 전달하려고 시도하고 있다고 의심한다. 그래서 당신은 오류를 얻는다. 'MyKinectViewer' 클래스 란 무엇입니까? 코드를 보지 않고는 문제를 더 진단하기 어렵습니다. – ekhumoro

+0

글쎄요, MyKinectViewer는 QGLWidget입니다 ...이 몇 가지 정보로 저를 도울 수 있습니까? : s Kinect 3D 비디오 – user3369214