gpt4 book ai didi

python - 打开一个新窗口来收集数据并在主窗口中处理它

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:45 24 4
gpt4 key购买 nike

我有一个主窗口,我使用另一个窗口来获取一些值,我想在主窗口中显示这些值,有点像闹钟的工作方式。首先它是空的,然后第二个窗口让您选择时间,然后完成后,我希望这些数据显示在第一个窗口上。我希望它的工作方式与 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)创建新表。只要不调用第二个窗口,我就可以使用此逻辑修改表,即在列表中附加一些硬编码值,然后修改表。但是,使用我当前的代码,该表以其原始状态存在。

最佳答案

由于您的问题太广泛,我将给您举一个例子:

  1. 主窗口带有一个按钮和一条禁用线。
  2. 该按钮使其显示第二个窗口。
  3. 将信息放入第二个窗口的行内。
  4. 第二个窗口的这一行会实时更新主窗口中的行。
  5. 这是由 signals 发生的排放。
<小时/>

所以你有类似的东西:

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 ,并且仅在单击它时才发送回文本,就像第一个窗口中的按钮使第二个窗口出现一样。

关于python - 打开一个新窗口来收集数据并在主窗口中处理它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45145967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com