我正在使用python构建桌面应用程序,但在获取我设置的类变量时遇到了一些问题。
我的程序是这样构建的:
CharCreator.py
class MainWindow(QtWidgets.QMainWindow):
charName = ""
def __init__(self):
super().__init__()
def editCharClick(self):
from CharEdit import editUi
MainWindow.charName = self.getSelected()
print(MainWindow.charName)
if(MainWindow.charName is not None):
self.editWin = editUi()
self.editWin.show()
else:
print("charName is none")
def main():
app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
所以我有一个主窗口类,一个charName类变量。然后,我有了典型的方法(init,main等),并有一个editCharClick方法,该方法采用表的选定行,获取所需单元格的名称,并将其字符串内容分配给类变量。这部分在我的CharCreator.py文件中效果很好。
问题出在我的第二个文件中。如我的editCharClick方法所示,它将打开第二个窗口(CharEdit.py文件)。那是我需要获取MainWindow.charName类变量的地方。
CharEdit.py
class editUi(QtWidgets.QMainWindow):
def __init__(self):
super(editUi, self).__init__()
uic.loadUi("./ui/new.ui", self)
from CharCreator import MainWindow
print(MainWindow.charName)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
newwindow = editUi()
sys.exit(app.exec_())
我简化了这个文件只是为了使我的类变量正确,但似乎无法实现。
任何帮助,谢谢。
我尝试更改代码以与事件/信号一起使用,但不太喜欢。因此,我只是走了简单的路,更改了editUi类构造函数,使其可以接受另一个参数。然后,在MainWindow.editCharClick()中创建editUi对象时,可以将editUi对象中的变量作为参数传递。
CharCreator.py
class MainWindow(QtWidgets.QMainWindow):
charName = ""
def __init__(self):
super().__init__()
def editCharClick(self):
from CharEdit import editUi
MainWindow.charName = self.getSelected()
print(MainWindow.charName)
if(MainWindow.charName is not None):
self.editWin = editUi(MainWindow.charName)
self.editWin.show()
else:
print("charName is none")
def main():
app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
CharEdit.py
class editUi(QtWidgets.QMainWindow):
def __init__(self, ch):
super(editUi, self).__init__()
uic.loadUi("./ui/new.ui", self)
from CharCreator import MainWindow
print(ch)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
newwindow = editUi()
sys.exit(app.exec_())