m0_66512479 2022-01-20 15:19 采纳率: 40%
浏览 37
已结题

设计了一个窗体想要实现角度弧度的互相转换,但是好像传参出现了问题,一直实现不了。

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
import sys,math
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QDialog
from PyQt5.QtWidgets import QMainWindow
from 角度转换 import Ui_MainWindow


class Using_test(QDialog,Ui_MainWindow):
    def __init__(self, *args, **kwargs):
        super(Using_test, self).__init__(*args, **kwargs)
        self.setupUi(self)
        self.a = ""
        self.b = ""
        self.pushButton.clicked.connect(self.calcu_1())
        self.pushButton_2.clicked.connect(self.calcu_2())


    def calcu_1(self):
        a = self.lineEdit.Text()
        rad = math.radians(a)
        self.lineEdit_2.setText("%.2f°" % rad)

    def calcu_2(self):
        b = self.lineEdit_2.Text()
        deg = math.degrees(b)
        self.lineEdit.setText("%.2f°" % deg)



if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex =Ui_MainWindow()
    w = QMainWindow()
    ex.setupUi(w)
    w.show()
    sys.exit(app.exec_())


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(100, 70, 51, 31))
        self.label.setObjectName("label")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(150, 70, 131, 41))
        self.lineEdit.setObjectName("lineEdit")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(100, 260, 41, 31))
        self.label_2.setObjectName("label_2")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(150, 260, 131, 41))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(410, 70, 101, 51))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(410, 250, 101, 51))
        self.pushButton_2.setObjectName("pushButton_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "角度:"))
        self.label_2.setText(_translate("MainWindow", "弧度:"))
        self.pushButton.setText(_translate("MainWindow", "转换"))
        self.pushButton_2.setText(_translate("MainWindow", "转换"))
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img

  • 写回答

2条回答 默认 最新

  • zlebhs 2022-01-20 15:50
    关注
    1. 监听函数设置:self.pushButton.clicked.connect(self.calcu_1())
      这里需要你传入的是一个函数,而不是调用一个函数,改为self.pushButton.clicked.connect(self.calcu_1),另一个按钮同理
    2. main函数中,手动调用了ex.setupUi(w),而在Using_test,__init__方法中,也调用了self.setupUi(self),结果会怎么样呢?
      简单来说,当刚开始的时候确实设置好了监听,但是在main函数又手动调用了一次窗体控件的创建,把前面的给覆盖了。可以这样修改:
      # 直接继承QMainWindow
      class Using_test(QMainWindow, Ui_MainWindow):
       ...里面逻辑不动
      if __name__ == '__main__':
       app = QApplication(sys.argv)
       w = Using_test()
       w.show()
       sys.exit(app.exec_())
      
    3. 获取LineEdit文本的方法叫text(),不是Text(),并且获取到的是字符串,还得转int或者double,看你自己了这里就。

    大概就这么多问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月28日
  • 已采纳回答 1月20日
  • 创建了问题 1月20日

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料