QComboBoxのオプションのリストからデフォルトのタスクを設定するにはどうすればよいですか?

オラトエ

編集済み

QComboBoxには、「フィート」と「メートル」の2つのオプションがあります。GUIで最初のオプションを選択するたびに、または値がすでに「フィート」にあるために2つを選択せず​​に続行すると、アプリがクラッシュします(Pythonが機能しなくなりました)。

次の編集されたコード行があります。

from PyQt5 import QtCore, QtWidgets

class Widget(QtWidgets.QWidget):
def __init__(self):
    super().__init__()

    self.value = QtWidgets.QLineEdit()
    self.unit = QtWidgets.QComboBox()
    self.convert = QtWidgets.QPushButton()

    self.setLayout(QtWidgets.QVBoxLayout())

    self.value.setObjectName("value")
    self.layout().addWidget(self.value)

    self.layout().addWidget(self.unit)
    self.unit.addItems(["feet", "meters"])

    self.layout().addWidget(self.convert)
    self.convert.setText("Convert")

    self.unit.currentIndexChanged.connect(self.unit_select)
    self.convert.clicked.connect(self.convert_click)

# UNIT SELECT
def unit_select(self):
    current_index = self.unit.currentIndex()
    if current_index == 0:
        num = float(self.value.text()) * 0.3047972654
    elif current_index == 1:
        num = float(self.value.text()) * 1
    self.final = num

# CONVERT VALUE
def convert_click(self):
    print("Converted value =", self.final)



if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

QComboBoxのデフォルトとして「フィート」を設定する必要があります。

S.ニック

それを試してみてください:

from PyQt5 import QtCore, QtWidgets

class Widget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()

        self.unit = QtWidgets.QComboBox()

        self.setLayout(QtWidgets.QVBoxLayout())
        self.layout().addWidget(self.unit)
        self.unit.addItems(["feet", "meters"])

        self.unit.setCurrentIndex(0)                            # <-----
        self.current_index = 0                                  # <-----

        self.unit.activated[int].connect(self.onActivatedIndex)
        self.unit.currentIndexChanged.connect(self.unit_select)

        self.unit_select(self.current_index)

    @QtCore.pyqtSlot(int)
    def onActivatedIndex(self, index):
        print("ActivatedIndex", index)

    @QtCore.pyqtSlot(int)
    def unit_select(self, index):

        if index == 0:
            print("\nCurrentIndex {} - feet".format(index))
            # ...
        elif index == 1:
            print("\nCurrentIndex {} - meters".format(index))
            # ...            

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

ここに画像の説明を入力してください


更新:

import re      # To test string conversion to float  !!!

from PyQt5 import QtCore, QtWidgets

class Widget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()

        self.value   = QtWidgets.QLineEdit()
        self.unit    = QtWidgets.QComboBox()
        self.convert = QtWidgets.QPushButton()

        self.setLayout(QtWidgets.QVBoxLayout())

        self.value.setObjectName("value")
        self.layout().addWidget(self.value)

        self.layout().addWidget(self.unit)
        self.unit.addItems(["feet", "meters"])

        self.layout().addWidget(self.convert)
        self.convert.setText("Convert")

        self.unit.currentIndexChanged.connect(self.unit_select)
        self.convert.clicked.connect(self.convert_click)

    # UNIT SELECT
    def unit_select(self):

        if re.match("^\d+?\.*\d*?$", self.value.text()) is None: #self.value.text():
            QtWidgets.QMessageBox.information(None, 'Warning', 
                'The string QLineEdit `{}` cannot be converted to float'.format(self.value.text()))
            return False            

        current_index = self.unit.currentIndex()
        if current_index == 0:
            num = float(self.value.text()) * 0.3047972654
        elif current_index == 1:
            num = float(self.value.text()) * 1
        self.final = num

    # CONVERT VALUE
    def convert_click(self):

        if re.match("^\d+?\.*\d*?$", self.value.text()) is None: #self.value.text():
            QtWidgets.QMessageBox.information(None, 'Warning', 
                'The string QLineEdit `{}` cannot be converted to float'.format(self.value.text()))
        else:
            self.unit_select()
            print("Converted value =", self.final)


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

ここに画像の説明を入力してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonクリックのデフォルトオプションを-hに設定するにはどうすればよいですか?

分類Dev

Pythonクリックのデフォルトオプションを-hに設定するにはどうすればよいですか?

分類Dev

デフォルトのパラメータ設定用のシェルスクリプトを作成するにはどうすればよいですか

分類Dev

Wordのキャプションスタイルをデフォルトとして中央に設定するにはどうすればよいですか?

分類Dev

xorgグラフィックデバイスのデフォルトオプションを定義するにはどうすればよいですか

分類Dev

Mac Startup Managerからデフォルトのスタートアップディスクを設定するにはどうすればよいですか?

分類Dev

スクリプトでデフォルトのタイムゾーンを設定するにはどうすればよいですか?

分類Dev

スクリプトでデフォルトのタイムゾーンを設定するにはどうすればよいですか?

分類Dev

Dockerマシンでプルするデフォルトのレジストリを設定するにはどうすればよいですか?

分類Dev

Dockerマシンでプルするデフォルトのレジストリを設定するにはどうすればよいですか?

分類Dev

アクションバーのタイトルにカスタムフォントを設定するにはどうすればよいですか?

分類Dev

異なるフォントを使用するためにselectの各オプションのスタイルを設定するにはどうすればよいですか(マテリアライズCSSフレームワークを使用)

分類Dev

イオンオプションのデフォルトの選択値を設定するにはどうすればよいですか?

分類Dev

Androidでデフォルトのアプリケーションフォントをカスタムフォントに設定するにはどうすればよいですか?

分類Dev

IDLEをPythonスクリプトのデフォルトエディタとして設定するにはどうすればよいですか?

分類Dev

IDLEをPythonスクリプトのデフォルトエディタとして設定するにはどうすればよいですか?

分類Dev

Slimのプリティプリントオプションをデフォルトで使用するようにRailsプロジェクトを設定するにはどうすればよいですか?

分類Dev

JavaScriptのオプションの引数にデフォルト値を設定するにはどうすればよいですか?

分類Dev

オプションのRange引数のデフォルト値を設定するにはどうすればよいですか?

分類Dev

System.Text.Json.JsonSerializerのデフォルトオプションをグローバルに設定するにはどうすればよいですか?

分類Dev

Odoo 11のデフォルトの空の選択ボックスオプションを削除するにはどうすればよいですか?

分類Dev

システム起動時にデフォルトのデスクトップ環境を設定するにはどうすればよいですか?

分類Dev

Android Studioにインストールするデフォルトのプロジェクトを設定するにはどうすればよいですか?

分類Dev

javascriptでデフォルトのリンクを設定するにはどうすればよいですか?

分類Dev

Unity Launcherで他のユーザーのデフォルトアプリケーションを設定するにはどうすればよいですか?

分類Dev

Unity Launcherで他のユーザーのデフォルトアプリケーションを設定するにはどうすればよいですか?

分類Dev

SingleSelectFieldでデフォルトのオプション値を設定するにはどうすればよいですか?

分類Dev

AngularJSでselectのデフォルトオプションを設定するにはどうすればよいですか?

分類Dev

PhpStormでデフォルトのPHPバージョン/インタープリターを設定するにはどうすればよいですか?

Related 関連記事

  1. 1

    Pythonクリックのデフォルトオプションを-hに設定するにはどうすればよいですか?

  2. 2

    Pythonクリックのデフォルトオプションを-hに設定するにはどうすればよいですか?

  3. 3

    デフォルトのパラメータ設定用のシェルスクリプトを作成するにはどうすればよいですか

  4. 4

    Wordのキャプションスタイルをデフォルトとして中央に設定するにはどうすればよいですか?

  5. 5

    xorgグラフィックデバイスのデフォルトオプションを定義するにはどうすればよいですか

  6. 6

    Mac Startup Managerからデフォルトのスタートアップディスクを設定するにはどうすればよいですか?

  7. 7

    スクリプトでデフォルトのタイムゾーンを設定するにはどうすればよいですか?

  8. 8

    スクリプトでデフォルトのタイムゾーンを設定するにはどうすればよいですか?

  9. 9

    Dockerマシンでプルするデフォルトのレジストリを設定するにはどうすればよいですか?

  10. 10

    Dockerマシンでプルするデフォルトのレジストリを設定するにはどうすればよいですか?

  11. 11

    アクションバーのタイトルにカスタムフォントを設定するにはどうすればよいですか?

  12. 12

    異なるフォントを使用するためにselectの各オプションのスタイルを設定するにはどうすればよいですか(マテリアライズCSSフレームワークを使用)

  13. 13

    イオンオプションのデフォルトの選択値を設定するにはどうすればよいですか?

  14. 14

    Androidでデフォルトのアプリケーションフォントをカスタムフォントに設定するにはどうすればよいですか?

  15. 15

    IDLEをPythonスクリプトのデフォルトエディタとして設定するにはどうすればよいですか?

  16. 16

    IDLEをPythonスクリプトのデフォルトエディタとして設定するにはどうすればよいですか?

  17. 17

    Slimのプリティプリントオプションをデフォルトで使用するようにRailsプロジェクトを設定するにはどうすればよいですか?

  18. 18

    JavaScriptのオプションの引数にデフォルト値を設定するにはどうすればよいですか?

  19. 19

    オプションのRange引数のデフォルト値を設定するにはどうすればよいですか?

  20. 20

    System.Text.Json.JsonSerializerのデフォルトオプションをグローバルに設定するにはどうすればよいですか?

  21. 21

    Odoo 11のデフォルトの空の選択ボックスオプションを削除するにはどうすればよいですか?

  22. 22

    システム起動時にデフォルトのデスクトップ環境を設定するにはどうすればよいですか?

  23. 23

    Android Studioにインストールするデフォルトのプロジェクトを設定するにはどうすればよいですか?

  24. 24

    javascriptでデフォルトのリンクを設定するにはどうすればよいですか?

  25. 25

    Unity Launcherで他のユーザーのデフォルトアプリケーションを設定するにはどうすればよいですか?

  26. 26

    Unity Launcherで他のユーザーのデフォルトアプリケーションを設定するにはどうすればよいですか?

  27. 27

    SingleSelectFieldでデフォルトのオプション値を設定するにはどうすればよいですか?

  28. 28

    AngularJSでselectのデフォルトオプションを設定するにはどうすればよいですか?

  29. 29

    PhpStormでデフォルトのPHPバージョン/インタープリターを設定するにはどうすればよいですか?

ホットタグ

アーカイブ