我有一个主窗口,我使用另一个窗口来获取一些值,我想在主窗口中显示这些值,有点像闹钟如何工作。首先它将为空,然后第二个窗口让您选择时间,然后在完成后,我希望这些数据显示在第一个窗口上。 我希望这与Qmessagebox的工作方式类似。
def Add_new_schedule(self):
if(self.TABLE_LENGTH == 5):
self.TOAST_WARNING.setText("LIMIT REACHED!")
else:
from Clock import Ui_Clock
self.CLOCK_WINDOW = Ui_Clock()
self.CLOCK_WINDOW.show()
在这里,调用时钟窗口,在设置值后,点击按钮“确定”'该信号连接到主窗口中的一个功能。
def Get_clock_values(self, TIME_DETAILS):
DATA = {}
DATA['index'] = len(self.DATA_FROM_DB)+1
DATA['start_time'] = TIME_DETAILS[0]
DATA['end_time'] = TIME_DETAILS[1]
DATA['mode'] = TIME_DETAILS[2]
DATA['node_1'] = True
DATA['node_2'] = True
DATA['node_3'] = True
DATA['node_4'] = True
self.DATA_FROM_DB.append(DATA)
self.Clear_table()
self.Set_table()
DATA_FROM_DB是可用计划的字典列表,我能够在此列表中成功附加新值。 Clear_Table()将现有小部件清除为空白,并且Set_table()应该使用新修改的列表(DATA_FROM_DB)创建新表。 只要没有调用第二个窗口,即在列表中附加一些硬编码值然后修改表,我就能用这个逻辑修改表。但是,使用我当前的代码,表格以其原始状态存在。
答案 0 :(得分:1)
由于你的问题过于宽泛,我会给你一个例子:
所以你有类似的东西:
import sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtWidgets import QVBoxLayout
from PyQt5.QtWidgets import QWidget
class MainWidget(QWidget):
def __init__(self):
super(MainWidget, self).__init__()
self.setFixedSize(500,500)
self.window2 = Window2(self)
self.btn_show_window2 = QPushButton("Open Window 2")
self.btn_show_window2.clicked.connect(self.show_window2)
self.layout = QVBoxLayout()
self.setLayout(self.layout)
self.text_from_window2 = QLineEdit()
self.text_from_window2.setStyleSheet("color: red;")
self.text_from_window2.setDisabled(True)
self.layout.addWidget(self.text_from_window2)
self.layout.addWidget(self.btn_show_window2)
def show_window2(self):
self.window2.show()
def close(self):
self.window2.close()
super(MainWidget, self).close()
@pyqtSlot(str)
def update_label(self, txt):
self.text_from_window2.setText(txt)
class Window2(QWidget):
def __init__(self, parent):
super(Window2, self).__init__()
self.setFixedSize(300,200)
self.layout = QVBoxLayout()
self.setLayout(self.layout)
self.line_edit = QLineEdit()
self.line_edit.textChanged.connect(parent.update_label)
self.layout.addWidget(self.line_edit)
if __name__ == "__main__":
app = QApplication(sys.argv)
mw = MainWidget()
mw.show()
sys.exit(app.exec_())
注意: 您有“百万”方法,这只是您可以遵循的众多方法之一。例如,您可以在第二个窗口中使用另一个按钮,而不是使用textChanged
,只有在单击时才会发回文本,就像第一个窗口中的按钮显示第二个按钮一样。