【问题标题】:How to transfer QLineEdit value into console?如何将 QLineEdit 值传输到控制台?
【发布时间】:2021-11-09 12:56:24
【问题描述】:

假设我们在一个 .py 文件中有一个带有 Buttons 和 LineEdits 的接口。我在另一个代码中有这个代码,它继承了它:

import Inter_Input_Blasting as interf
from PyQt6 import QtCore,QtWidgets,QtGui
from functools import partial

class MainWindow(QtWidgets.QMainWindow):

def on_clicked(self):
    print("Button Pushed")

def __init__(self,parent=None):
    super(MainWindow, self).__init__(parent)
    self.ui = interf.Ui_MainWindow()
    self.ui.setupUi(self)
    self.ui.calc_button.clicked.connect(MainWindow.on_clicked)

    self.ui.input_overall_1.textChanged.connect(MainWindow.gather_data)


def gather_data(self):
    return self.ui.input_overall_1.text()


if __name__== "__main__":
    import sys
    app = interf.QtWidgets.QApplication(sys.argv)
    Form = MainWindow()
    Form.show()
    sys.exit(app.exec())

所以,当我将值放入 lineedit 字段时,我需要将其打印到控制台中。 .textChanged() 方法有效,但 .gather_data() 无效。

【问题讨论】:

  • 打印这些数字并不重要,而是存储在变量中以便以后访问它们
  • 您的问题令人困惑。首先,访问实例的函数的连接,必须连接到实例,而不是类,所以它是self.on_clickedself.gather_data。然后,您说您想将文本打印到控制台,但是您想存储这些值。请尽量让自己清楚,记住如果你想添加细节你也可以edit你的帖子,如果你不知道为什么self改变了结果,请认真研究和研究什么类和实例是,因为这种差异是 OOP 的强制性知识。
  • @musicamante 很抱歉造成误解。实际上,我现在正在研究 python 和 pyqt。这些问题只是为了更好地理解。我也是俄罗斯人,所以可能是英语不好

标签: python pyqt6


【解决方案1】:

提供一个变量来存储文本:

def __init__(self,parent=None):
    self.txt = None

然后在方法gather_data 中,将文本存储在该变量中:

def gather_data(self):
    sef.txt = self.ui.input_overall_1.text()

然后在sys.exit 之前,打印该值:

r = app.exec()
print(Form.txt)
sys.exit(r)

【讨论】:

  • 奇怪,但它说我没有定义名称'txt'
  • 好的,我刚刚将 MainWindow 更改为 self 并且它正在工作。但是 print 也可以放在 .gather_data() 方法中
  • 虽然这个解决方案“有效”,但它并不能很好地解决问题: 1. 使用全局变量是没有意义的; 2. 问题在于实例方法在类函数中的使用。
猜你喜欢
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多