【发布时间】:2021-01-20 15:42:55
【问题描述】:
我有一个主 GUI 窗口,我可以通过单击按钮打开一个新窗口(FCT 弹出窗口):
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow() # sets ui = to the main window from the ui-file
self.ui.setupUi(self)
[...]
def enter_fct_results(self):
self.FCTpopup = FCT_Window()
self.FCTpopup.show()
在窗口中,我有一个要填写的 QTable 和一个提交数据并关闭窗口的按钮:
class FCT_Window(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.ui = Ui_FCT_Window()
self.ui.setupUi(self)
[...]
self.ui.pushButton_submitFCT.clicked.connect(lambda: MainWindow.store_fct_data(MainWindow, self.on_submit()[0]))
def on_submit(self): # event when user clicks
fct_nparray = np.zeros((self.ui.tableFCTinputs.rowCount(), self.ui.tableFCTinputs.columnCount()))
for j in range(self.ui.tableFCTinputs.columnCount()):
for i in range(self.ui.tableFCTinputs.rowCount()):
fct_nparray[i, j] = float(self.ui.tableFCTinputs.item(i, j).text())
return fct_nparray, lambda: self.close()
self.ui.pushButton_submitFCT.clicked.connect(lambda: MainWindow.store_fct_data(MainWindow, self.on_submit()[0]))
主窗口中的接收函数如下所示:
def store_fct_data(self, data):
self.fct_data = data
现在我只想了解如何禁用主窗口或打开第二个窗口的按钮。在 enter_fct_results() 中禁用是可行的,但是如果我想使用 store_fct_data 或 on_submit 再次启用它,则会提供如下错误:
self.ui.pushButton_FCTresults.setEnabled(1)
self.ui.pushButton_submitFCT.clicked.connect(lambda: MainWindow.store_fct_data(MainWindow, self.on_submit()[0]))
AttributeError: type object 'MainWindow' has no attribute 'ui'
我不认为我在这里理解如何处理多个窗口和东西。例如,我将如何通过使用 window2 中的按钮来更改主窗口中按钮的颜色。我如何访问小部件?如果我在同一个窗口内,我很容易做到这一点
self.ui.pushbutton.setText("New Text")
我不知道如何跨 Windows 访问项目和属性:(你能帮帮我吗?
【问题讨论】: