2

シンプルな QLineEdit と QbuttonBox (それぞれ lineEdit と buttonBox) を使用してダイアログを作成しました。今は、OK を押したときに行編集にあるものを使用しようとしています。それは単に空白になり、移動中に印刷されず、印刷(ベース)の下部に「なし」と印刷されます。サーフィンして text() を見つけましたが、まだ愛はありません。どんな助けでも大歓迎です。

from PyQt4 import QtGui, QtCore
import sys

import x

class Dialog(QtGui.QDialog, x.Ui_Dialog):

    def __init__(self):
        super(Dialog, self).__init__()
        self.setupUi(self)
        global base
        base = self.buttonBox.accepted.connect(self.go)


    def go(self):
        what = self.lineEdit.text()
        return what
        print(what)



app = QtGui.QApplication(sys.argv)
form = Dialog()
form.show()
app.exec_()

print(base)
4

1 に答える 1

2

go()コード例は、メソッドが何かを出力する前に返されることを除いて、ほとんど正しいです。したがって、その行を削除すると、期待どおりに動作するはずです。

class Dialog(QtGui.QDialog, x.Ui_Dialog):
    def __init__(self):
        super(Dialog, self).__init__()
        self.setupUi(self)
        self.buttonBox.accepted.connect(self.go)

    def go(self):
        what = self.lineEdit.text()
        print(what)

また、シグナルをハンドラーに接続するときに戻り値を取得しても意味がありません。接続が無効な場合は、エラーが発生します。

編集

ダイアログの外から行編集のテキストにアクセスしたい場合、実際にはシグナルは必要ありません。ユーザーがテキストを入力するまでダイアログがブロックされていることを確認してから、行編集に直接アクセスしてください。

dialog = Dialog()
if dialog.exec_() == QtGui.QDialog.Accepted:
     text = dialog.lineEdit.text()
     # do stuff with text...
else:
     print('cancelled')
于 2013-11-11T19:17:57.513 に答える