您好,登錄后才能下訂單哦!
inputDialog組件怎么在Pyqt5 中使用?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
QInputDialog類提供了一種簡單方面的對話框來獲得用戶的單個輸入信息,可以是一個字符串,一個Int類型數據,一個double類型數據或是一個下拉列表框的條目。
對應的Dialog其中包括一個提示標簽,一個輸入控件(若是調用字符串輸入框,則為一個QLineEdit,若是調用Int類型或double類型,則為一個QSpinBox,若是調用列表條目輸入框,則為一個QComboBox),還包括一個確定輸入(Ok)按鈕和一個取消輸入(Cancel)按鈕。
QInputDialog:
class QInputDialog(QDialog) | QInputDialog(QWidget parent=None, Qt.WindowFlags flags=0)
QInputDialog同樣繼承自QDialog,提供簡單輸入的對話框,
代碼示例 :
示例代碼如下:
#-*- coding:utf-8 -*- ''' inputDialog ''' __author__ = 'Tony Zhu' from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QInputDialog, QGridLayout, QLabel, QPushButton, QFrame class InputDialog(QWidget): def __init__(self): super(InputDialog,self).__init__() self.initUi() def initUi(self): self.setWindowTitle("項目信息") self.setGeometry(400,400,300,260) label1=QLabel("項目名稱:") label2=QLabel("項目類型:") label3=QLabel("項目人員:") label4=QLabel("項目成本:") label5=QLabel("項目介紹:") self.nameLable = QLabel("PyQt5") self.nameLable.setFrameStyle(QFrame.Panel|QFrame.Sunken) self.styleLable = QLabel("外包") self.styleLable.setFrameStyle(QFrame.Panel|QFrame.Sunken) self.numberLable = QLabel("40") self.numberLable.setFrameStyle(QFrame.Panel|QFrame.Sunken) self.costLable = QLabel("400.98") self.costLable.setFrameStyle(QFrame.Panel|QFrame.Sunken) self.introductionLable = QLabel("服務外包第三方公司") self.introductionLable.setFrameStyle(QFrame.Panel|QFrame.Sunken) nameButton=QPushButton("...") nameButton.clicked.connect(self.selectName) styleButton=QPushButton("...") styleButton.clicked.connect(self.selectStyle) numberButton=QPushButton("...") numberButton.clicked.connect(self.selectNumber) costButton=QPushButton("...") costButton.clicked.connect(self.selectCost) introductionButton=QPushButton("...") introductionButton.clicked.connect(self.selectIntroduction) mainLayout=QGridLayout() mainLayout.addWidget(label1,0,0) mainLayout.addWidget(self.nameLable,0,1) mainLayout.addWidget(nameButton,0,2) mainLayout.addWidget(label2,1,0) mainLayout.addWidget(self.styleLable,1,1) mainLayout.addWidget(styleButton,1,2) mainLayout.addWidget(label3,2,0) mainLayout.addWidget(self.numberLable,2,1) mainLayout.addWidget(numberButton,2,2) mainLayout.addWidget(label4,3,0) mainLayout.addWidget(self.costLable,3,1) mainLayout.addWidget(costButton,3,2) mainLayout.addWidget(label5,4,0) mainLayout.addWidget(self.introductionLable,4,1) mainLayout.addWidget(introductionButton,4,2) self.setLayout(mainLayout) def selectName(self): name,ok = QInputDialog.getText(self,"項目名稱","輸入項目名稱:", QLineEdit.Normal,self.nameLable.text()) if ok and (len(name)!=0): self.nameLable.setText(name) def selectStyle(self): list = ["外包","自研"] style,ok = QInputDialog.getItem(self,"項目性質","請選擇項目性質:",list) if ok : self.styleLable.setText(style) def selectNumber(self): number,ok = QInputDialog.getInt(self,"項目成員","請輸入項目成員人數:",int(self.numberLable.text()),20,100,2) if ok : self.numberLable.setText(str(number)) def selectCost(self): cost,ok = QInputDialog.getDouble(self,"項目成本","請輸入項目成員人數:",float(self.costLable.text()),100.00,500.00,2) if ok : self.costLable.setText(str(cost)) def selectIntroduction(self): introduction,ok = QInputDialog.getMultiLineText(self,"項目介紹","介紹:","服務外包第三方公司 \nPython project") if ok : self.introductionLable.setText(introduction) if __name__=="__main__": import sys app=QApplication(sys.argv) myshow=InputDialog() myshow.show() sys.exit(app.exec_())
運行之后的效果:
示例說明:
通過點擊不同的按鈕,來選擇不同類型的輸入對話框,從而選擇所需的數據。
代碼分析:
L18~22:
label1=QLabel("項目名稱:") label2=QLabel("項目類型:") label3=QLabel("項目人員:") label4=QLabel("項目成本:") label5=QLabel("項目介紹:")
定義了數據項名稱的標簽。
L24~33:
self.nameLable = QLabel("PyQt5") self.nameLable.setFrameStyle(QFrame.Panel|QFrame.Sunken) self.styleLable = QLabel("外包") self.styleLable.setFrameStyle(QFrame.Panel|QFrame.Sunken) self.numberLable = QLabel("40") self.numberLable.setFrameStyle(QFrame.Panel|QFrame.Sunken) self.costLable = QLabel("400.98") self.costLable.setFrameStyle(QFrame.Panel|QFrame.Sunken) self.introductionLable = QLabel("服務外包第三方公司") self.introductionLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)
定義了項目數據項中的數據內容,數據內容顯示在對應的標簽中。
setFrameStyle()設定標簽的樣式,有如下的樣式:
QFrame.Box
QFrame.Panel
QFrame.WinPanel
QFrame.HLine
QFrame.VLine
QFrame.StyledPanel
QFrame.Sunken
QFrame.Raised
L35~L44:
nameButton=QPushButton("...") nameButton.clicked.connect(self.selectName) styleButton=QPushButton("...") styleButton.clicked.connect(self.selectStyle) numberButton=QPushButton("...") numberButton.clicked.connect(self.selectNumber) costButton=QPushButton("...") costButton.clicked.connect(self.selectCost) introductionButton=QPushButton("...") introductionButton.clicked.connect(self.selectIntroduction)
實例化QPushButton對象,并將對應的clicked信號和自定義的槽函數綁定起來。
L46~61:
實例化網格布局,并將對應的控件添加到網格布局中。
功能分析:
1:獲取項目名稱:
def selectName(self): name,ok = QInputDialog.getText(self,"項目名稱","輸入項目名稱:", QLineEdit.Normal,self.nameLable.text()) if ok and (len(name)!=0): self.nameLable.setText(name)
QInputDialog中很多方法均為靜態方法,因此不需要實例化直接可以調用。調用QInputDialog的getText()函數彈出標準字符串輸入對話框,getText()函數原型如下:
| getText(...) | QInputDialog.getText(QWidget, str, str, QLineEdit.EchoMode echo=QLineEdit.Normal, str text=QString(), Qt.WindowFlags flags=0, Qt.InputMethodHints inputMethodHints=Qt.ImhNone) -> (str, bool)
第1個參數parent,用于指定父組件;
第2個參數str,是標準輸入對話框的標題名;
第3個參數str,標準輸入對話框的標簽提示;
第4個參數echo,mode指定標準輸入對話框中QLineEdit控件的輸入模式;
第5個參數str,標準輸入對話框中QLineEdit控件的默認值;
第6個參數flags,指明標準輸入對話框的窗體標識;
第7個參數inputMethodHints,通過選擇不同的inputMethodHints值來實現不同的鍵盤布局;
單擊nameButton之后的效果:
若用戶單擊了“OK”按鈕,則把新輸入的名稱更新至顯示標簽。
2:獲取項目屬性:
def selectStyle(self): list = ["外包","自研"] style,ok = QInputDialog.getItem(self,"項目性質","請選擇項目性質:",list) if ok : self.styleLable.setText(style)
調用QInputDialog的getItem()函數彈出標準條目選擇對話框,getItem()函數原型如下:
| getItem(...) | QInputDialog.getItem(QWidget, str, str, list-of-str, int current=0, bool editable=True, Qt.WindowFlags flags=0, Qt.InputMethodHints inputMethodHints=Qt.ImhNone) -> (str, bool)
第1個參數parent,用于指定父組件;
第2個參數str,是標準條目選擇對話框的標題名;
第3個參數str,標準條目選擇對話框的標簽提示;
第4個參數list-of-str,標準條目選擇對話框中對應條目的list;
第5個參數editable,標準條目選擇對話框條目是否可編輯標識,默認為不可編輯;
第6個參數flags,指明標準輸入對話框的窗體標識;
第7個參數inputMethodHints,通過選擇不同的inputMethodHints值來實現不同的鍵盤布局.;
單擊styleButton之后的效果:
若用戶單擊了“OK”按鈕,則把新選擇的類型更新至顯示標簽。
3:獲取項目成員:
def selectNumber(self): number,ok = QInputDialog.getInt(self,"項目成員","請輸入項目成員人數:",int(self.numberLable.text()),20,100,2) if ok : self.numberLable.setText(str(number))
調用QInputDialog的getInt()函數彈出標準int類型輸入對話框,getInt()函數原型如下:
| getInt(...) | QInputDialog.getInt(QWidget, str, str, int value=0, int min=-2147483647, int max=2147483647, int step=1, Qt.WindowFlags flags=0) -> (int, bool)
第1個參數parent,用于指定父組件;
第2個參數str,是標準int類型輸入對話框的標題名;
第3個參數str,標準int類型輸入對話框的標簽提示;
第4個參數value,標準int類型輸入對話框中的默認值;
第5個參數min,標準int類型輸入對話框中的最小值;
第6個參數max,標準int類型輸入對話框中的最大值;
第7個參數step,標準int類型輸入對話框中的步長,即QSpinBox中上下選擇是數據變化的步長;
第8個參數inputMethodHints,通過選擇不同的inputMethodHints值來實現不同的鍵盤布局;
單擊numberButton之后的效果:
若用戶單擊了“OK”按鈕,則把新選擇的成員數據更新至顯示標簽。
4:獲取項目成本:
def selectCost(self): cost,ok = QInputDialog.getDouble(self,"項目成本","請輸入項目成員人數:",float(self.costLable.text()),100.00,500.00,2) if ok : self.costLable.setText(str(cost))
調用QInputDialog的getDouble()函數彈出標準float類型輸入對話框,getDouble()函數原型如下:
| getDouble(...) | QInputDialog.getDouble(QWidget, str, str, float value=0, float min=-2147483647, float max=2147483647, int decimals=1, Qt.WindowFlags flags=0) -> (float, bool)
第1個參數parent,用于指定父組件;
第2個參數str,輸入對話框的標題名;
第3個參數str,輸入對話框的標簽提示;
第4個參數value,標準float類型輸入對話框中的默認值;
第5個參數min,標準float類型輸入對話框中的最小值;
第6個參數max,標準float類型輸入對話框中的最大值;
第7個參數decimals,小數點后面保留的位數;
第8個參數inputMethodHints,通過選擇不同的inputMethodHints值來實現不同的鍵盤布局;
單擊costButton之后的效果:
若用戶單擊了“OK”按鈕,則把新選擇的成本數據更新至顯示標簽
5:獲取項目介紹:
def selectIntroduction(self): introduction,ok = QInputDialog.getMultiLineText(self,"項目介紹","介紹:","服務外包第三方公司 \nPython project") if ok : self.introductionLable.setText(introduction)
調用QInputDialog的getMultiLineText()函數彈出標準多行文本類型輸入對話框,getMultiLineText()函數原型如下:
| getMultiLineText(...) | QInputDialog.getMultiLineText(QWidget, str, str, str text='', Qt.WindowFlags flags=0, Qt.InputMethodHints inputMethodHints=Qt.ImhNone) -> (str, bool)
第1個參數parent,用于指定父組件;
第2個參數str,輸入對話框的標題名;
第3個參數str,輸入對話框的標簽提示;
第4個參數text,輸入對話框中LineEdit的默認值;
第5個參數flags,指明標準輸入對話框的窗體標識;
第6個參數inputMethodHints,通過選擇不同的inputMethodHints值來實現不同的鍵盤布局;
單擊introductionButton之后的效果:
關于inputDialog組件怎么在Pyqt5 中使用問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。