当QWidget关闭时,如何使QMainWindow刷新?[PyQt5]

2024-10-04 03:21:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在用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中已经存在的文件所做的那样。你知道吗

有人知道怎么做吗?你知道吗


Tags: fromimportselfinitmaindefpyqt5color