PyQt5项目问题:调用Cinema.create()无法获取界面控件值
PyQt5 控件输入值无法获取问题解决思路
常见问题点及解决方法
控件引用错误
别在Cinema.create方法里重新创建控件实例(比如self.comboBox = QComboBox()),这会生成一个全新的空控件,肯定拿不到用户输入。你要确保方法里访问的是Create_place对话框中已经初始化好的控件对象。如果Cinema和对话框是两个独立类,要么把控件的值直接作为参数传给create方法,要么把对话框实例传递过去。取值方法用错
不同控件的取值方法要对应:- QLineEdit:用
text(),比如phone = self.lineEdit_phone.text() - QComboBox:要获取显示文本用
currentText(),要获取索引用currentIndex(),如果设置了自定义数据用currentData(),别写错方法名。
- QLineEdit:用
实例传递逻辑错误
验证密码后调用create时,要从当前打开的Create_place对话框实例里取值,而不是新建一个对话框实例。比如在对话框的按钮槽函数里直接拿当前实例的控件值,再传给Cinema的方法:
# 示例代码片段 class Create_place(QDialog): def __init__(self): super().__init__() self.setupUi(self) # Qt Designer生成的界面初始化 self.confirm_btn.clicked.connect(self.verify_and_create) def verify_and_create(self): # 验证密码 if self.pwd_edit.text() == "your_password": # 直接从当前对话框实例拿控件值 phone_num = self.phone_edit.text() selected_option = self.type_combo.currentText() # 调用Cinema的create方法,把值传进去 Cinema().create(phone_num, selected_option) class Cinema: def create(self, phone, option): # 这里就能正常拿到输入值了 print(f"手机号:{phone},选项:{option}") # 你的创建逻辑代码
如果还是不行,检查下控件的objectName是不是和你代码里调用的一致——比如Qt Designer里控件的objectName是phoneEdit,你代码里写成phone_edit,那肯定找不到控件,自然拿不到值。
内容的提问来源于stack exchange,提问作者Programir
相关产品推荐
相关产品推荐

