簡體   English   中英

window 與 pyside2 中的另一個距離有多近?

[英]How close a window from another in pyside2?

I have 2 windows: MainWindow and a normal window, I have a button in MainWindow that open the second window and I have a button in the second window, I want when clicked the button in the second window close the MainWindow. 兩個 windows 在單獨的 class 和文件中。

這是主窗口

from select_company_controller import SelectCompany
from views.main_window_view import MainWindowForm
from PySide2 import QtWidgets, QtCore, QtGui
import sys

class MainWindow(QtWidgets.QMainWindow, MainWindowForm):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setupUi(self)

        self.button.clicked.connect(self.open_select_company_window)

    def open_select_company_window(self):
        self.window = SelectCompany()
        self.window.show()


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    window.showMaximized()
    sys.exit(app.exec_())

這是第二個 window

from PySide2 import QtWidgets, QtCore, QtGui
from views.select_company_view import SelectCompanyForm


class SelectCompany(QtWidgets.QWidget, SelectCompanyForm):

    def __init__(self):
        super(SelectCompany, self).__init__()
        self.setupUi(self)

        self.button.clicked.connect(close_main_window)

    def close_main_window(self):
        pass

試試看:

主文件

import sys
#from PySide2 import QtWidgets, QtCore, QtGui
from PyQt5 import QtWidgets, QtCore, QtGui

from select_company_controller import SelectCompany
#from views.main_window_view import MainWindowForm


class MainWindow(QtWidgets.QMainWindow): #, MainWindowForm):
    def __init__(self):
        super(MainWindow, self).__init__()
#        self.setupUi(self)

        self.setWindowTitle('Main Window')
        centralWidget = QtWidgets.QWidget()
        self.setCentralWidget(centralWidget)        

        button = QtWidgets.QPushButton('Open SelectCompany')
        button.clicked.connect(self.open_select_company_window)

        grid = QtWidgets.QGridLayout(centralWidget)
        grid.addWidget(button)

    def open_select_company_window(self):
        self.window = SelectCompany(self)
        self.window.show()


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show() #showMaximized()
    sys.exit(app.exec_())

select_company_controller.py

#from PySide2 import QtWidgets, QtCore, QtGui
from PyQt5 import QtWidgets, QtCore, QtGui
#from views.select_company_view import SelectCompanyForm


class SelectCompany(QtWidgets.QMainWindow):   #QWidget, SelectCompanyForm):
    def __init__(self, parent=None):
        super(SelectCompany, self).__init__(parent)
        self.parent = parent
        self.setWindowTitle('SelectCompany')

        centralWidget = QtWidgets.QWidget()
        self.setCentralWidget(centralWidget)

        button = QtWidgets.QPushButton('Close MainWindow')
        button.clicked.connect(self.close_main_window)

        grid = QtWidgets.QGridLayout(centralWidget)
        grid.addWidget(button)

    def close_main_window(self):
        self.parent.hide()

在此處輸入圖像描述


更新

#from PySide2 import QtWidgets, QtCore, QtGui
from PyQt5 import QtWidgets, QtCore, QtGui
#from views.select_company_view import SelectCompanyForm


class SelectCompany(QtWidgets.QWidget):   #, SelectCompanyForm):                  #  <--- QWidget
    def __init__(self, parent=None):
        super(SelectCompany, self).__init__(parent)
        self.parent = parent

        self.setWindowFlags(QtCore.Qt.Window |  QtCore.Qt.WindowStaysOnTopHint)   #  <---

        self.setWindowTitle('SelectCompany')

        button = QtWidgets.QPushButton('Close MainWindow')
        button.clicked.connect(self.close_main_window)

        grid = QtWidgets.QGridLayout(self)
        grid.addWidget(button)

    def close_main_window(self):
        self.parent.hide()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM