PyQ5中findChild() 方法,为什么是none
第一个代码是kimi生成的,调用findchild方法可以使用;第二个调用findchild是none,为什么?
import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setGeometry(100, 100, 300, 200) self.setWindowTitle('Find Child Example') # 创建一个 QLineEdit 控件并设置对象名称 lineEdit = QLineEdit(self) lineEdit.setObjectName("lineEdit") lineEdit.setGeometry(50, 50, 200, 30) # 使用 findChild 查找控件 foundLineEdit = self.findChild(QLineEdit, "lineEdit") if foundLineEdit: print("找到 QLineEdit 控件:", foundLineEdit) else: print("未找到 QLineEdit 控件") if __name__ == '__main__': app = QApplication(sys.argv) mainWindow = MainWindow() mainWindow.show() sys.exit(app.exec_())
使用qtdesigner生成,没有使用ui和代码分离。findchild为什么是none?
cheng2.py
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'cheng2.ui' # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtCore import QObject from PyQt5.QtWidgets import QLineEdit class Ui_MainWindow(QObject): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) MainWindow.setStyleSheet("font: 75 14pt \"Adobe Arabic\";") self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.widget = QtWidgets.QWidget(self.centralwidget) self.widget.setGeometry(QtCore.QRect(220, 60, 261, 351)) self.widget.setObjectName("widget") self.verticalLayout = QtWidgets.QVBoxLayout(self.widget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.lineEdit = QtWidgets.QLineEdit(self.widget) self.lineEdit.setObjectName("lineEdit") self.verticalLayout.addWidget(self.lineEdit) self.lineEdit_2 = QtWidgets.QLineEdit(self.widget) self.lineEdit_2.setObjectName("lineEdit_2") self.verticalLayout.addWidget(self.lineEdit_2) self.lineEdit_3 = QtWidgets.QLineEdit(self.widget) self.lineEdit_3.setObjectName("lineEdit_3") self.verticalLayout.addWidget(self.lineEdit_3) self.lineEdit_4 = QtWidgets.QLineEdit(self.widget) self.lineEdit_4.setObjectName("lineEdit_4") self.verticalLayout.addWidget(self.lineEdit_4) self.lineEdit_5 = QtWidgets.QLineEdit(self.widget) self.lineEdit_5.setObjectName("lineEdit_5") self.verticalLayout.addWidget(self.lineEdit_5) self.lineEdit_6 = QtWidgets.QLineEdit(self.widget) self.lineEdit_6.setObjectName("lineEdit_6"s) self.verticalLayout.addWidget(self.lineEdit_6) self.pushButton = QtWidgets.QPushButton(self.widget) self.pushButton.setObjectName("pushButton") self.verticalLayout.addWidget(self.pushButton) self.lineEdit_7 = QtWidgets.QLineEdit(self.widget) self.lineEdit_7.setObjectName("lineEdit_7") self.verticalLayout.addWidget(self.lineEdit_7) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 28)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) num1 = self.findChild(QLineEdit, "lineEdit") print(num1) self.pushButton.clicked.connect(self.multiplication) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.pushButton.setText(_translate("MainWindow", "乘2")) def multiplication(self): print("kk") num1 = self.findChild(QLineEdit, "lineEdit") num1.setText(num1.text() * 2) print(num1) num2 = self.findChild(QLineEdit, "lineEdit_2") num3 = self.findChild(QLineEdit, "lineEdit_3") num4 = self.findChild(QLineEdit, "lineEdit_4") num5 = self.findChild(QLineEdit, "lineEdit_5") num6 = self.findChild(QLineEdit, "lineEdit_6") num7 = self.findChild(QLineEdit, "lineEdit_7") for i in range(1,7): num = f'num{i}' print(num) num.setText(num.text() * 2) import sys # 主方法,程序从此处启动PyQt设计的窗体 if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() # 创建窗体对象 ui = Ui_MainWindow() # 创建PyQt设计的窗体对象 ui.setupUi(MainWindow) # 调用PyQt窗体的方法对窗体对象进行初始化设置 MainWindow.setWindowFlags(QtCore.Qt.Window) MainWindow.show() # 显示窗体 sys.exit(app.exec_()) # 程序关闭时退出进程
浙公网安备 33010602011771号