0

QInputDialog.getItems は静的メソッドであり、その「コンストラクター」は次のとおりです。

(QString, bool ok) QInputDialog.getItem (QWidget parent, QString title, QString label, QStringList list, int current = 0, bool editable = True, Qt.WindowFlags flags = 0)

サブクラス化したいのですが、次の方法が見つかりません。

  • ダイアログボックスを表示する
  • OKボタンが押されたか押されていないかでTrueかFalseを返す

私はそのようなことを試みましたが、あまり成功していません:

from PyQt4 import QtGui

class DialogPerso(QtGui.QInputDialog):

    def __init__(self):
        super(DialogPerso, self).__init__()


    def getItem(parent, title, label, items, current = 0, editable = True, flags = 0):

        string = "prout"

        print(parent)
        print(title)
        print(label)
        print(items)

        return string, QtGui.QInputDialog.result()

    getItem = staticmethod(getItem)

今のところ、文字列のみを返すことができます。OKボタンの値を取得する方法と、ダイアログボックスを表示する方法について何か考えはありますか?

4

2 に答える 2

1

これが本当に価値があるかどうかはわかりませんが、以下は C++ のオリジナルと多かれ少なかれ同等です:

class DialogPerso(QtGui.QInputDialog):
    @staticmethod
    def getItem(parent, title, label, items,
                current=0, editable=True, flags=0, hints=0):
        if 0 <= current < len(items):
            text = items[current]
        elif items:
            text = items[0]
        else:
            text = ''
        dialog = QtGui.QInputDialog(
            parent, QtCore.Qt.WindowFlags(flags))
        dialog.setWindowTitle(title)
        dialog.setLabelText(label)
        dialog.setComboBoxItems(items)
        dialog.setTextValue(text)
        dialog.setComboBoxEditable(editable)
        dialog.setInputMethodHints(QtCore.Qt.InputMethodHints(hints))
        if dialog.exec_() == QtGui.QDialog.Accepted:
            return dialog.textValue(), True
        return text, False
于 2013-12-04T03:53:39.313 に答える