def handle(self): global num init_info = [] # 存放初始输入的信息 info = self.textEdit.toPlainText() num = list(map(int, info.split())) for i in num: # 将初始的已知信息放入综合数据库 dy_data.append(Feature[i - 1]) init_info.append(Feature[i - 1]) infer = inference() QMessageBox.about( self.window, '结果', f'''您初始输入的植物特征信息有:\n{' '.join(init_info)} \n{' '.join(mid_result)} \n您得到的答案是:\n{infer}''')
时间: 2024-02-14 10:04:50 浏览: 35
这段代码是一个名为handle的槽函数,用于处理用户输入已有特征信息后的操作。该函数首先使用QPlainTextEdit对象的toPlainText()方法获取用户输入的信息,并将其转换为整数列表。然后,将这些信息添加到一个全局变量dy_data中,该变量用于存放已知的特征信息。
接下来,调用inference函数进行推理,并将推理结果存储在变量infer中。最后,使用QMessageBox对象的about()方法在GUI界面上弹出一个消息框,显示初始输入的特征信息、中间推理结果和最终的推理结果。
需要注意的是,该代码中的mid_result变量没有被定义,可能是在其他函数中定义的。
相关问题
reg_sci = [85, 90, 20, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 152] DIFF_R = int(self.textEdit_dir_r.toPlainText()) R_MIN = int(self.textEdit_r_min.toPlainText()) R_MAX = int(self.textEdit_r_max.toPlainText()) Inv = int(self.textEdit_in_cnt.toPlainText()) T_Age = int(self.textEdit_t_age.toPlainText()) KFP_P = float(self.textEdit_kfp_p.toPlainText())*100.0 KFP_Q = float(self.textEdit_kfp_q.toPlainText())*100.0 KFP_R = float(self.textEdit_kfp_r.toPlainText())*100.0 reg_sci[6] += DIFF_R // 256 reg_sci[7] = DIFF_R % 256 reg_sci[8] += R_MIN // 256 reg_sci[9] = R_MIN % 256 reg_sci[10] += R_MAX // 256 reg_sci[11] = R_MAX % 256 reg_sci[12] += Inv // 256 reg_sci[13] = Inv % 256 reg_sci[14] += T_Age // 256 reg_sci[15] = T_Age % 256 reg_sci[22] = sum(reg_sci[:22]) % 256 parent_serial = main.get_serial() parent_serial.write(reg_sci)报错invalid literal for int() with base 10: ''
这个错误通常意味着你在使用 int() 函数时传递了一个空字符串作为参数。根据你提供的代码片段,有可能是以下其中一个参数为空字符串:
- self.textEdit_dir_r.toPlainText()
- self.textEdit_r_min.toPlainText()
- self.textEdit_r_max.toPlainText()
- self.textEdit_in_cnt.toPlainText()
- self.textEdit_t_age.toPlainText()
- self.textEdit_kfp_p.toPlainText()
- self.textEdit_kfp_q.toPlainText()
- self.textEdit_kfp_r.toPlainText()
你需要检查这些文本编辑器中的文本是否为空。如果它们是空的,你需要先在代码中进行一些检查,以确保这些文本框中的文本是有效的,然后再将它们转换为所需的类型。
调整这段代码,使其运行成功,import PySide2.QtWidgets from PySide2.QtUiTools import QUiLoader from PySide2.QtWidgets import QMessageBox class Caesar: def __init__(self): # 从文件中加载UI界面 self.ui = QUiLoader().load('code.ui') self.ui.pushButton_3.clicked.connect(self.encrypt2) def encrypt2(self): # 获取用户输入的文本 plaintext = self.ui.textEdit_9.toPlainText() # 使用公钥进行加密 ciphertext = self.public_key.encrypt( plaintext, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ) ) self.ui.textEdit_10.setPlainText(f"加密结果:{ciphertext.hex()}") if __name__ == '__main__': # 管理图形用户界面应用程序的控制流 app = PySide2.QtWidgets.QApplication([]) caesar = Caesar() # 显示ui界面 caesar.ui.show() app.exec_()
好的,以下是可以运行的代码:
```python
import PySide2.QtWidgets
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import QMessageBox
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import hashes
class Caesar:
def __init__(self):
# 从文件中加载UI界面
self.ui = QUiLoader().load('code.ui')
# 生成RSA密钥对
self.private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)
self.public_key = self.private_key.public_key()
self.ui.pushButton_3.clicked.connect(self.encrypt2)
def encrypt2(self):
# 获取用户输入的文本
plaintext = self.ui.textEdit_9.toPlainText().encode()
# 使用公钥进行加密
ciphertext = self.public_key.encrypt(
plaintext,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
self.ui.textEdit_10.setPlainText(f"加密结果:{ciphertext.hex()}")
if __name__ == '__main__':
# 管理图形用户界面应用程序的控制流
app = PySide2.QtWidgets.QApplication([])
caesar = Caesar()
# 显示ui界面
caesar.ui.show()
app.exec_()
```
这个代码中,我们做了以下修改:
1. 导入了所需的库:`cryptography.hazmat.primitives.asymmetric`、`cryptography.hazmat.primitives`,这些库用于实现加密算法,包括 RSA。
2. 在 `__init__` 函数中生成了一个 RSA 密钥对,并将公钥保存到了 `self.public_key` 变量中。这个变量可以在 `encrypt2` 函数中使用。
3. 在 `encrypt2` 函数中,我们将用户输入的明文先转换为字节串,然后使用公钥进行加密,并将密文的十六进制表示输出到文本框中。请注意,我们使用了 `padding.OAEP` 进行填充,这是 RSA 加密中推荐的填充方式之一。
阅读全文