# 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_())