天天看點

PyQt5_QInputDialog_輸入對話框

# QInputDialog
#
#              提供一個簡單友善地對話框,獲得來自使用者輸入的單個值
#               單個值 可以是 數字,字元串 清單中的項目
#               通常會設定一個标簽以告知使用者輸入的内容

from PyQt5.Qt import *

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('QInputDialog')
        self.resize(500,500)
        self.iniUI()

    def iniUI(self):
        # self.id_getInt()
        # self.id_getDouble()
        # self.id_getText()
        # self.id_getMultiLineText()
        # self.id_setOption()
        self.id_Event()
    ##############################################使用靜态方法,快速建立輸入對話框



    def id_getInt(self):
        # 父控件,大标題,小标題,預設值,最小值,最大值,步長
        result = QInputDialog.getInt(self,'整形資料擷取框','請輸入整型資料',8,0,200,3)
        # result_int 傳回一個兩元素元組,第一個元素是 輸入的整型資料,第二個元素辨別确認True取消False 鍵
        print(result)

    def id_getDouble(self):
        # 父控件,大标題,小标題,預設值,最小值,最大值,小數點位數
        result = QInputDialog.getDouble(self,'浮點型資料擷取框','請輸入浮點型資料',8.00,0,200,2)
        print(result)

    def id_getText(self):
        result = QInputDialog.getText(self,'單行文本擷取框','請輸入單行文本',echo=QLineEdit.Password)
        print(result)

    def id_getMultiLineText(self):
        result = QInputDialog.getMultiLineText(self,'多行文本擷取框','請輸入多行文本:','預設文本内容')
        print(result)
    #############################使用靜态方法,快速建立輸入對話框

    
    
    ##############################################輸入對話框 展示設定
    def id_setOption(self):
        ind = QInputDialog(self,Qt.FramelessWindowHint)#無邊框樣式
        # ind.setOption(QInputDialog.UseListViewForComboBoxItems)#将setComboBox設定的清單攤開展示
        ind.setComboBoxItems(['1','2','acd','qwe'])
        ind.show()
    #############################輸入對話框 展示設定


    ##############################################輸入對話框 輸入模式設定
    #
    # 輸入 整型 浮點型 文本 等類型限制的設定
    #
    def id_setInputMode(self):
        ind = QInputDialog(self,Qt.FramelessWindowHint)
        # ind.setInputMode(QInputDialog.IntInput)   #整型
        ind.setInputMode(QInputDialog.DoubleInput)  #浮點型
        # ind.setInputMode(QInputDialog.TextInput)  #字元型
        ind.setComboBoxItems(['1','2','qwe'])       #設定下拉清單的模式
        ind.show()
    #############################輸入對話框 輸入模式設定


    ##############################################輸入對話框 标簽文本設定
    #
    # 标簽文本設定
    #
    def id_setText(self):
        ind = QInputDialog(self)
        ind.setLabelText('請輸入…………(小标簽)')
        ind.setOkButtonText('朕知道了')
        ind.setCancelButtonText('朕不同意')
        ind.show()
    #############################輸入對話框 标簽文本設定
    
    
    ##############################################輸入對話框 的細節設定
    #
    # 整型資料對話框
    #               id.setIntMaximum()
    #               id.setIntMinimum()
    #               id.setIntRange()
    #               id.setIntStep()
    #               id.setIntValue()
    # 浮點類型對話框
    #               id.setDoubleDecimals()
    #               id.setDoubleStep()      #設定浮點型輸入框的資料步長
    # 字元串類型對話框
    #               id.setTextEchoMode(QLineEdit.Password )#設定文本輸出模式,明文密文

    #
    # 下拉清單對話框
    #               id.setComboBoxItems( Iter )
    #               id.setComboBoxEditable(True)
    #############################輸入對話框 的細節設定

    ##############################################輸入對話框 信号相關
    #
    # 三種資料類型,兩種動作行為   6種觸發機制
    #
    # id.intValueChanged.connect(lambda int:)
    # id.doubleValueChanged.connect(lambda double:)
    # id.textValueChanged.connect(lambda str:)

    # id.intValueSelected.connect(lambda int:)
    # id.doubleValueSelected.connect(lambda double:)
    # id.textValueSelected.connect(lambda str:)
    #
    def id_Event(self):
        id_int = QInputDialog(self)
        id_int.setInputMode(QInputDialog.IntInput)
        id_int.intValueChanged.connect(lambda int_:print(int_))
        id_int.intValueSelected.connect(lambda int_:print('INT被選中:',int_))
        id_int.show()
    #############################輸入對話框 信号相關


if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    win = MyWindow()
    win.show()
    sys.exit(app.exec_())