Python在类和其他文件夹中的类之间传递值

时间:2018-12-07 08:32:56

标签: python-3.x global-variables pyqt5

如何从一个类中获取值并将其传递给单独文件夹中的另一个类?

我提出了阻止申请。用户可以选择选择一个现有项目(load_projekt_file类),也可以创建一个新项目(file_name类)。我想根据已选择的类来获取project_name,并将其传递给具有新类的另一个文件夹。

我的问题是我无法根据类来全局设置project_name。 (将其传递给下一个函数,并使用硬编码的project_name可以正常工作)

这是我的简短代码(我知道它仍然很长,但是应该可以运行):

文件一:

import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication

project_name = None


class load_projekt_file(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(load_projekt_file, self).__init__(parent)

        self.setGeometry(350,250,500, 400)

        self.list_widget = QtWidgets.QListWidget(self)
        self.list_widget.setGeometry(QtCore.QRect(10, 10, 480, 310))

        self.line_edit = QtWidgets.QLineEdit(self)
        self.line_edit.setGeometry(QtCore.QRect(10, 350, 400, 30))
        bpas = ['a','b','c']

        self.list_widget.addItems(bpas)
        self.list_widget.itemClicked.connect(self.on_itemClicked)


        self.load_project = QtWidgets.QPushButton("OK", self)
        self.load_project.setGeometry(QtCore.QRect(440, 350, 50, 30))
        self.load_project.clicked.connect(self.on_click_load_project)

    def on_click_load_project(self):
        project_name = self.line_edit.text()
        self.close()

    @QtCore.pyqtSlot(QtWidgets.QListWidgetItem)
    def on_itemClicked(self, item):
        self.line_edit.setText(item.text())


class file_name(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(file_name, self).__init__(parent)

        self.setGeometry(450, 250, 280, 120)  # Fenstergröße festlegen

        self.project_name = QtWidgets.QLabel("Name:", self)
        self.project_name.setGeometry(QtCore.QRect(10, 10, 100, 30))

        self.w_project_name = QtWidgets.QLineEdit(self)
        self.w_project_name.setGeometry(QtCore.QRect(10, 40, 250, 30))

        self.make_new_project = QtWidgets.QPushButton("OK", self)
        self.make_new_project.setGeometry(QtCore.QRect(10, 80, 50, 30))
        self.make_new_project.clicked.connect(self.on_click_new_project)

    def on_click_new_project (self):
        project_name = self.w_project_name.text()
        self.close()



class main_window(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(main_window, self).__init__(parent)

        self.setGeometry(50, 50, 100, 100)

        self.work_file = QtWidgets.QPushButton("A", self)
        self.work_file.setGeometry(QtCore.QRect(10, 20, 25, 25))
        self.work_file.clicked.connect(self.on_click_a)
        self.dialog1 = file_name(self)

        self.work_file = QtWidgets.QPushButton("B", self)
        self.work_file.setGeometry(QtCore.QRect(45, 20, 25, 25))
        self.work_file.clicked.connect(self.on_click_b)
        self.dialog2 = load_projekt_file(self)

    def on_click_a (self):
        self.dialog1.show()

    def on_click_b(self):
        self.dialog2.show()


def main():
    app = QApplication(sys.argv)
    ex = main_window()
    ex.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

文件二: 从file_one导入project_name

class main_v1(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(main_v1, self).__init__(parent)
        print (project_name)

0 个答案:

没有答案
相关问题