в первый раз, используя stackoverflow. Я постараюсь написать свой вопрос как можно более ясным.
Я создаю родительское окно первого окна второго окна (дочернее).
Когда я нажимаю кнопку в первом окне, я хочу открыть второе окно.
В окне я отправляю обратно некоторый текст в первое окно, используя метод .parent ()
Я хочу, чтобы оба windows были безрамными, используя self.setWindowFlags (Qt.FramelessWindowHint)
Мой код:
from PyQt5.QtWidgets import QDialog, QApplication, QLineEdit, QPushButton
from PyQt5.QtCore import Qt, QRect
import sys
class FirstWindow(QDialog):
def __init__(self, parent=None):
super(FirstWindow, self).__init__(parent)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setFixedSize(400,400)
self.go_to_second_window = SecondWindow(self)
######################################################
self.button_go_second_window = QPushButton(self)
self.button_go_second_window.setGeometry(QRect(40,150,220,50))
self.button_go_second_window.setStyleSheet("QPushButton { background-color: rgba(63, 142, 191, 255); color : rgba(242, 242, 242, 255) }")
self.button_go_second_window.clicked.connect(self.go_second_window)
######################################################
self.show()
def go_second_window (self):
self.go_to_second_window.show()
class SecondWindow(QDialog):
def __init__(self, parent):
super(SecondWindow, self).__init__(parent)
#self.setWindowFlags(Qt.FramelessWindowHint)
self.setFixedSize(400,400)
######################################################
self.field = QLineEdit(self)
self.field.move(40,100)
######################################################
self.button_send_data_back = QPushButton(self)
self.button_send_data_back.setText("Send")
self.button_send_data_back.setGeometry(QRect(40,150,220,50))
self.button_send_data_back.setStyleSheet("QPushButton { background-color: rgba(63, 142, 191, 255); color : rgba(242, 242, 242, 255) }")
self.button_send_data_back.clicked.connect(self.send_data_back)
def send_data_back (self):
go_to_first_window = FirstWindow(self)
self.parent().button_go_second_window.setText(self.field.text())
self.field.setText("")
go_to_first_window.show()
self.close()
if __name__ == "__main__" :
App = QApplication (sys.argv)
window = FirstWindow()
sys.exit(App.exec())
Моя проблема:
Это работает именно так, как я ожидаю. Проблема в том, что второе окно не безрамное.
Если я раскомментирую #self.setWindowFlags(Qt.FramelessWindowHint)
во втором окне инициализации, оно не будет работать так, как я ожидаю.
Если я раскомментирую его и установлю super(SecondWindow, self).__init__(parent)
на super(SecondWindow, self).__init__(parent=None)
у меня будут два windows без рамки, и они будут работать, как я ожидал, но я не смогу отправить свои данные обратно в Первое окно, так как метод .parent () не найдет родителя.