簡體   English   中英

Python pyqt5 重置所有小部件輸入

[英]Python pyqt5 reset all widget inputs

我正在使用這種方法在 python 腳本中擁有多個 windows GUI。 按下按鈕,我打開兩個 forms 之一,它有多個 textEdits 和 comboBoxes,用於更輕松地填充單詞 teamplate。

現在,我想在填寫完表格后重置所有輸入,並保存文檔。

我想要什么行為:

從主 window 中,根據 2 個 ComboBoxes 索引(文檔類型和客戶性別)打開 forms 之一。

填寫表格並退出后,我將 go 回到主 window,當我再次打開一個表格時,文本編輯為空,組合框位於索引 0 上。

但我無法讓它工作,要么輸入沒有重置,要么我殺死了彈出窗口 window 和主 window。

我不能只殺死彈出窗口,我只能隱藏它並再次顯示它。

# import some PyQt5 modules
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QWidget
from PyQt5.QtGui import QImage
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import QTimer




from lib.eco_barbat_ui import *
from lib.eco_femeie_ui import *
from lib.eco_main_ui import *

class eco_abd_barbat(QWidget):
    def __init__(self):
        # call QWidget constructor
        super().__init__()
        # self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.ui = Ui_EcoAbdBarbat()
        self.ui.setupUi(self)

    def display(self):
        self.show()


class eco_abd_femeie(QWidget):
    def __init__(self):
        # call QWidget constructor
        super().__init__()
        # self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.ui = Ui_EcoAbdFemeie()
        self.ui.setupUi(self)
    def display(self):
        self.show()


class MainWindow(QWidget):
    # class constructor
    def __init__(self):
        # call QWidget constructor
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.eco_abd_barbat = eco_abd_barbat()
        self.eco_abd_femeie = eco_abd_femeie()
        self.ui.pushButton.clicked.connect(self.open)

    def open(self):
        if self.ui.tip.currentIndex() == 0 and self.ui.sex.currentIndex()==0:
            self.eco_abd_femeie.ui.qnume = self.ui.nume.toPlainText()
            self.eco_abd_femeie.ui.qprenume = self.ui.prenume.toPlainText()
            self.eco_abd_femeie.ui.qvarsta = self.ui.varsta.toPlainText()
            self.eco_abd_femeie.ui.qdomiciliu = self.ui.domiciliu.toPlainText()
            self.eco_abd_femeie.show()


        elif self.ui.tip.currentIndex() == 0 and self.ui.sex.currentIndex()==1:
            self.eco_abd_barbat.ui.qnume=self.ui.nume.toPlainText()
            self.eco_abd_barbat.ui.qprenume = self.ui.prenume.toPlainText()
            self.eco_abd_barbat.ui.qvarsta = self.ui.varsta.toPlainText()
            self.eco_abd_barbat.ui.qdomiciliu = self.ui.domiciliu.toPlainText()
            self.eco_abd_barbat.show()





if __name__ == '__main__':
    app = QApplication(sys.argv)

    # create and show mainWindow
    mainWindow = MainWindow()
    mainWindow.show()

    sys.exit(app.exec_())

這是使它為我工作的代碼,我無法解釋 100% 為什么它工作,但我想在我一遍又一遍地重新加載相同的變量之前,因為現在我強迫它每次都從包含它的文件中重新加載 ui變量被訪問。

出於某種原因,如果變量前面沒有 self (在 self.formWindow 上,在 open 函數中),第二個 window 在打開后只會關閉一瞬間。

這對我有用,我主要理解為什么會這樣表演,但如果有人能把自我部分弄清楚,我很樂意學習。

# import some PyQt5 modules
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QWidget
from PyQt5.QtGui import QImage
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import QTimer




from lib.eco_barbat_ui import *
from lib.eco_femeie_ui import *
from lib.eco_main_ui import *

class eco_abd_barbat(QWidget):
    def __init__(self):
        # call QWidget constructor
        super().__init__()
        # self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.ui = Ui_EcoAbdBarbat()
        self.ui.setupUi(self)




class eco_abd_femeie(QWidget):
    def __init__(self):
        # call QWidget constructor
        super().__init__()
        # self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        self.ui = Ui_EcoAbdFemeie()
        self.ui.setupUi(self)


class MainWindow(QWidget):

    # class constructor
    def __init__(self):
        # call QWidget constructor
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.pushButton.clicked.connect(self.open)

    def select(self):
        if self.ui.tip.currentIndex() == 0 and self.ui.sex.currentIndex() == 0:
            return eco_abd_femeie()
        else:
            return eco_abd_barbat()


    def open(self):
            self.formWindow=self.select()
            self.formWindow.ui.qnume = self.ui.nume.toPlainText()
            self.formWindow.ui.qprenume = self.ui.prenume.toPlainText()
            self.formWindow.ui.qvarsta = self.ui.varsta.toPlainText()
            self.formWindow.ui.qdomiciliu = self.ui.domiciliu.toPlainText()
            self.formWindow.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM