[英]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.