鱼C论坛

 找回密码
 立即注册
查看: 890|回复: 3

[已解决]PyQt5 里的LineEdit控件如何使用按钮追加文本

[复制链接]
发表于 2020-4-14 23:14:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
刚学PyQt5,准备自己写一个计算器,但是按钮每次按下,文本框内的数字都会被更新掉,怎么才能追加写入文本呢
代码如下
  1. import sys
  2. from PyQt5.QtWidgets import QWidget,QGridLayout,QApplication,QPushButton,QLineEdit
  3. from PyQt5.QtGui import QFont,QIcon


  4. class Calculator(QWidget):

  5.     def __init__(self):
  6.         super(Calculator, self).__init__()

  7.         self.initUI()

  8.     def initUI(self):

  9.         """创建网格布局类"""
  10.         grid = QGridLayout(self)
  11.         self.setLayout(grid)

  12.         """创建按钮位置"""
  13.         locs = [(y,x) for y in range(1,5) for x in range(4)]

  14.         """创建按钮名称"""
  15.         btn_name = ["7","8","9","+","4","5","6","-","1","2","3","*","0",".","+","/"]

  16.         for name,loc in zip(btn_name,locs):

  17.             button = QPushButton(name)
  18.             button.clicked.connect(self.enterNum)


  19.             button.setFont(self.btnfont())
  20.             grid.addWidget(button,*loc)

  21.         """创建输入框"""
  22.         self.enterLine = QLineEdit()
  23.         self.enterLine.setFont(self.btnfont())
  24.         grid.addWidget(self.enterLine,0,0)


  25.         self.setWindowTitle("Calculator")
  26.         self.setGeometry(300,300,300,300)
  27.         self.show()

  28.     def btnfont(self):
  29.         return QFont("Microsoft YaHei",12)

  30.     """按下数字函数"""
  31.     def enterNum(self):

  32.         strNum = ''#保存输入内容

  33.         sender = self.sender()
  34.         strNum = strNum + sender.text()
  35.         print(strNum)
  36.         self.enterLine.setText(strNum)

  37. if __name__ == '__main__':

  38.     app = QApplication(sys.argv)
  39.     cal = Calculator()
  40.     sys.exit(app.exec_())
复制代码
最佳答案
2020-4-15 00:59:30
先获取lineEdit的文本,对获取的文本进行追加,然后再重新设置文本。
  1. """按下数字函数"""
  2.     def enterNum(self):

  3.         strNum = self.enterLine.text()#保存输入内容

  4.         sender = self.sender()
  5.         strNum = strNum + sender.text()
  6.         print(strNum)
  7.         self.enterLine.setText(strNum)
复制代码

由于用手机打字的,你的代码我没有细看,可能搞错,但是你明白我的意思就好了
Snipaste_2020-04-14_23-13-31.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-14 23:26:27 | 显示全部楼层
求个大佬解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-15 00:59:30 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
先获取lineEdit的文本,对获取的文本进行追加,然后再重新设置文本。
  1. """按下数字函数"""
  2.     def enterNum(self):

  3.         strNum = self.enterLine.text()#保存输入内容

  4.         sender = self.sender()
  5.         strNum = strNum + sender.text()
  6.         print(strNum)
  7.         self.enterLine.setText(strNum)
复制代码

由于用手机打字的,你的代码我没有细看,可能搞错,但是你明白我的意思就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-15 09:07:25 | 显示全部楼层
hrp 发表于 2020-4-15 00:59
先获取lineEdit的文本,对获取的文本进行追加,然后再重新设置文本。

由于用手机打字的,你的代码我没有 ...

解决了,感谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-14 16:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表