2017-05-10 25 views
0

私は2つのボタンを持つpyqtウィンドウを呼び出さなければならないメインクラスにポイントがあり、それらのボタンはグローバル変数の値を "IN "または" OUT "。しかし、ボタンを押して値を変更すると、そのウィンドウを終了できません。私が最初に機能し、あなたに私のGUIクラスのコードを示して二つのボタンのコードを見て、IN/OUTしてみましょう:pyqtクラスの終了関数

class Window(QtGui.QMainWindow): 
def __init__(self): 
    self.window_exec = None 
    self.window_about = None 
    self.window_help = None 

    super(Window, self).__init__() 
    self.setGeometry(0, 0, 500, 400) 
    self.setWindowTitle('Court Selection') 
    self.setStyleSheet("background-color:#003333") 
    #palette = QtGui.QPalette() 
    #palette.setBrush(QtGui.QPalette.Background,QtGui.QBrush(QtGui.QPixmap("pic1.jpg"))) 
    #self.setPalette(palette) 
    self.center() 

    self.default_layout() 

    self.show() 

# Positioning window in the center 
def center(self): 
    frameGm = self.frameGeometry() 
    screen = QtGui.QApplication.desktop().screenNumber(QtGui.QApplication.desktop().cursor().pos()) 
    centerPoint = QtGui.QApplication.desktop().screenGeometry(screen).center() 
    frameGm.moveCenter(centerPoint) 
    self.move(frameGm.topLeft()) 

def default_layout(self): 
    # ----------- Main label ----------- 
    lbl = QtGui.QLabel("Please Select the Verdict", self) 
    lbl.move(100, 70) 
    lbl.setStyleSheet('font-size:20pt;color:white') 
    lbl.resize(lbl.sizeHint()) 
    # ----------- IN Button ----------- 
    btn = QtGui.QPushButton("IN", self) 
    btn.clicked.connect(self.IN) 
    btn.setStyleSheet('font-size:12pt;background-color:white;border-radius:5px;') 
    btn.resize(QtCore.QSize(100, 50)) 
    btn.move(200, 170) 
    # ----------- OUT Button ----------- 
    btn = QtGui.QPushButton("OUT", self) 
    btn.clicked.connect(self.OUT) 
    btn.setStyleSheet('font-size:12pt;background-color:white;border-radius:5px;') 
    btn.resize(QtCore.QSize(100, 50)) 
    btn.move(200, 250) 

def IN(self): 
    global verdict 
    verdict='IN' 
    self.exit() 

def OUT(self): 
    global verdict 
    verdict='OUT' 
    self.exit() 

今私は私のメインクラスで、同じファイルと別のクラスから、それを呼び出しています

しかし、「img = Image.open(court)」のIN/OUTウィンドウは終了せず、この行は実行されません。だから問題は、変数を変更し、ウィンドウを終了し、ウィンドウが呼び出されたクラスに戻るようにボタンを動作させることです。ありがとう

答えて

0

私が正しく覚えている場合、ウィンドウを閉じる方法は... closeです。ですから、closeへの呼び出しでexitへの呼び出しに置き換える必要があります。ok

+0

(... OUT用と同じ)

def IN(self): global verdict verdict='IN' self.close() 

それはウィンドウを閉じましたが、 ]ダイアログ=ウィンドウ() ダイアログ後のコード.exec_() ' は動作していません。これは、guiクラスのウィンドウを閉じた後、メインクラスの次の行に戻ったことがないようです –

+0

それは別の問題です。 * PyQt Modal Dialog *を検索する必要があります。あなたはhttp://stackoverflow.com/q/24697347/3545273またはhttp://stackoverflow.com/q/18196799/3545273を読むことができます。後者は、サブウィンドウから情報を取り出す方法を説明しています。 –

関連する問題