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 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算