特定のボタンが押されたときに別のモジュールに書き込まれるQWidget
を表示する必要があります。これを実現するために、私はこのコードを書いた:QMainWindowから開いたQWidgetを閉じる
class Window(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
#A lot of stuff in here
#The button is connected to the method called Serial_connection
self.connect(self.btn_selection_tool3, SIGNAL("clicked()"), self.Serial_connection)
def Serial_connection(self):
LiveData.LiveData(self).show()
はこれを行う、私はQWidget
を開いて、それが正常に動作します。しかし、私はこれを閉じたいときはQWidget
、私はそれを行うことはできません。 self.close()
、self.accept()
あるいはsys.exit(1)
:I'veは以下のようにいくつかのオプションを試してみました
class LiveData(QWidget):
def __init__(self,parent = None):
super(QWidget, self).__init__(parent)
#Another stuff in here
#I create a "close" button connected to another method
self.connect(self.closeBtn, QtCore.SIGNAL("clicked()"), self.StopAndClose)
def StopAndClose(self):
print "Closing window"
self.close() #HERE IS WHERE I HAVE THE PROBLEM
:これはQWidget
のコードです。後者の問題sys.exit(1)
は、QWidget
とQMainWindow
を閉じてしまうことです。ですので、どうすればこのQWidget
を閉じることができますか?あなたが私を助けてくれることを願います。
はどのようにこの 'QWidget'が表示されて行うことができますか?私はそれがあなたの現在のウィジェットの上にオーバーレイされていると想像しています。別のダイアログでそれを開きますか? –
QWidgetを表示する 'show()'メソッドを呼び出す 'Serial_connection'メソッドを呼び出す' QMainWindow'の 'self.btn_selection_tool3'ボタンをクリックすると、' QWidget'が表示されます。私はこの最後のものを閉じる必要があります。私は 'self.close()'を使ってやりません。 –
ええ、それはあなたのメインウィンドウの上にウィジェットを置くだけです(それを配置せずにレイアウト)。 'close'は' QWidgets'の文脈で意味をなさないので何もしません。あなたは '.deleteLater()'を呼び出してウィジェットを削除することができます。しかし、私はまだそれを 'QDialog'にするか、あるいはあなたのメインウインドウに恒久的なウィジェットを作成し、それを連続的に作成したり削除したりするのではなく、表示/非表示、または有効/無効にするべきだと思っています(特に適切な位置付けなしで) –