QWidget关闭后如何刷新QMainWindow?[PyQt5]

时间:2018-02-05 22:18:22

标签: python class oop pyqt pyqt5

我目前正在使用PyQt5创建一个应用程序,我试图找到一种方法来刷新它调用的QWidget关闭时的主窗口。 我的主窗口页面如下所示:

import sys
import glob
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from addClass import addClass

class TeacherMain(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.initUI()

    def initUI(self):
        x = 30
        y = 80

        buttonContainer = QLabel(self)
        buttonContainer.setStyleSheet("background-color: #5D4A41;")
        buttonContainer.move(20, 70)
        buttonContainer.resize(1240, 550)
        buttonContainer.show()

        classes = glob.glob("Folder/*.csv") 
        classes = [j.strip("Folder/") for j in [i.strip('.csv') for i in classes]]
        for k in classes: 
            classButton = QPushButton(k, self)
            classButton.move(x, y)
            classButton.setStyleSheet("background-color: green;")
            classButton.resize(143, 143)
            classButton.clicked.connect(self.viewClass)
            x += 153 ## Increase value of x.
            if x >= 1235:
                y += 153
                x = 30

        addClass = QPushButton("Add Class...", self)
        addClass.move(x, y)
        addClass.resize(143, 143)
        addClass.clicked.connect(self.createClass)

        quit = QPushButton("Quit", self)
        quit.setStyleSheet("background-color: white;")
        quit.move(630, 645)

        self.setStyleSheet("background-color: #AD9A90;")
        self.setWindowTitle("SheikhCoin Teacher")
        self.setFixedSize(1280, 690)
        self.show()

    def createClass(self):
        self.new_window = addClass()
        self.new_window.show()

def main():
    app = QApplication(sys.argv)
    main = TeacherMain()
    main.show()
    sys.exit(app.exec_())
if __name__ == "__main__":
    main()

我的QWidget看起来像这样:

class addClass(QWidget):
    def __init__(self):
        QWidget.__init__(self)
        self.initUI()

    def initUI(self, granted):
        className = QLabel("Class Name", self)
        className.setStyleSheet("font: 14pt Comic Sans MS")

        self.nameBox = QLineEdit(self)
        self.nameBox.resize(200, 20)
        self.nameBox.setStyleSheet("background-color: white;")

        add = QPushButton("Add Class", self)
        add.setStyleSheet("background-color: white;")
        add.clicked.connect()

    def create(self):
        name = self.nameBox.text()
        path = "Folder/" + name + ".csv"
        classRows = [["Student Key", "Prefix", "Forename", "Surname", "Tutor"]]
        with open(path, 'w') as file:
            write = csv.writer(newClass, delimiter=',')
            write.writerows(classRows)
        self.close()

在QWidget中创建文件后,我希望主窗口更新以显示刚刚添加为按钮的文件,就像主窗口中Folder中已有的文件一样是第一次打开。

任何人都知道如何做到这一点?

0 个答案:

没有答案