最近我一直在努力解決問題,我無法繞過它。我有一個PyQt的QMainWindow
其中包含一個子窗口:PyQt4中的不活動子窗口
正如你可以計算出,點擊GO!按鈕將打開一個數由數量在QLineEdit
指定的子窗口:
並點擊QCheckBox
每個子窗口中應顯示文本。
問題是,這隻適用於最後衍生的子窗口。其他人似乎不活躍。 他們是一種讓他們活躍的方式嗎?
請在下面找到我的代碼:
from PyQt4 import QtGui
import mainWin
import subWin
import sys
class MainWindowGui():
def __init__(self):
self.w = QtGui.QMainWindow()
self.MainWindow = myWinCls(self)
self.MainWindow.setupUi(self.w)
self.w.showMaximized()
class myWinCls(QtGui.QMainWindow):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self)
self.parent = parent
def setupUi(self,Widget):
self.ui = mainWin.Ui_MainWindow()
self.ui.setupUi(Widget)
self.ui.mdiArea.addSubWindow(self.ui.subwindow)
self.ui.goBtn.clicked.connect(self.show_wins)
def show_wins(self):
N = int(self.ui.nbrEdit.text())
for self.k in xrange(N):
self.show_subwins()
def show_subwins(self):
self.win = QtGui.QWidget()
self.child_window = showSubWinCls(self)
self.child_window.setupUi(self.win)
self.subwin = self.ui.mdiArea.addSubWindow(self.win)
self.win.setWindowTitle("Subwin " + str(self.k))
self.subwin.show()
class showSubWinCls(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self)
self.parent = parent
def setupUi(self, Widget):
self.ui = subWin.Ui_Form()
self.ui.setupUi(Widget)
self.ui.checkBox.clicked.connect(self.show_msg)
def show_msg(self):
if self.ui.checkBox.isChecked():
self.ui.lineEdit.setText("Yiiiiiihaaaaaa !!!")
else:
self.ui.lineEdit.setText("")
def main():
app = QtGui.QApplication(sys.argv)
app.setStyle(QtGui.QStyleFactory.create('WindowsVista'))
ex = MainWindowGui()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
我相信這個問題是某種經典的伎倆,但現在,儘管搜索了一段時間,我無法弄清楚。 感謝您的幫助!
你試過debbug檢查'self.ui.checkBox.isChecked'的值爲每個子窗口? – MaTh
是的。從這個角度來看沒問題... –
有人在幾分鐘前添加了答案並將其刪除。太糟糕的原因提出的解決方案似乎工作... –