2017-09-29 16 views
1

ウィジェットにテキストを入力して関数の値を変更したいとします。 QLineEditとQTextEditのどちらを使うべきかはわかりませんが、私はいくつかのドキュメントを読んでいて、すべてそれを行うことができるようです。私は以下のようないくつかのサンプルコードを持っています。PyQt4:QLineEdit/QTextEditのテキストを読み込んで、ボタンをクリックしてテキストの変更をいくつかの関数に実装します。

import sys 
import PyQt4 
from PyQt4 import QtGui, QtCore 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 

class Widget(QWidget): 
    def __init__(self, parent= None): 
     super(Widget, self).__init__(parent) 
     layout = QGridLayout() 

     self.setLayout(layout) 

     btn = QPushButton('Push') 
     layout.addWidget(btn, 0, 0) 

     le = QLineEdit() 
     layout.addWidget(le, 0, 1) 


    def someFunc(self): 
     print() ## should print texts entered in le 


app = QApplication(sys.argv) 
widget = Widget() 
widget.show() 
app.exec_() 

あなたは上記を参照できるように、私は「プッシュ」ボタンをクリックすることにより、ルに入れているものは何でもテキスト印刷する「someFunc」方法をしたいです。

これを解決する方法を知っている人は、plsによろしくお願いします。

答えて

0

ボタンのclicked信号をsomeFuncに接続し、メインウィンドウの属性としてleを設定する必要があります(後でアクセスできるように)。

あなたWidgetクラスは、したがって、次のようになります。

class Widget(QWidget): 
    def __init__(self, parent= None): 
     super(Widget, self).__init__(parent) 
     layout = QGridLayout() 

     self.setLayout(layout) 

     btn = QPushButton('Push') 
     # connect the signal to the slot 
     btn.clicked.connect(self.someFunc) 
     layout.addWidget(btn, 0, 0) 

     # set an attribute 
     self.le = QLineEdit() 
     self.le.textChanged.connect(self.otherFunc) 
     layout.addWidget(self.le, 0, 1) 

    def someFunc(self): 
     # use the attribute to get the text 
     print('button-clicked:', self.le.text()) 

    def otherFunc(self, text): 
     print('text-changed:', text) 
+0

をだから私は「self.le」で何かを入力すると、それだけで自動的にいくつかのテキストが入力された信号を発しますか? – ryan9025

+0

@ ryan9025。そのために。 [textEdited](https://doc.qt.io/qt-4.8/qlineedit.html#textEdited)シグナルのようなものを使用する必要があります。これを行う方法を示すために私の例にいくつかの追加コードを追加しました。彼らが何をしているかを見るには、いくつかの[他の信号](https://doc.qt.io/qt-4.8/qlineedit.html#signals)を試してみることをお勧めします。 – ekhumoro

関連する問題