一、qdoublespinbox顯示小數
使用QDoubleSpinBox可以很容易地讓小數在UI界面上得到良好的展示效果,這個spinbox的最小、最大值都可以通過setValue函數來改變。
from PyQt5.QtWidgets import QApplication, QDoubleSpinBox
app = QApplication([])
spinbox = QDoubleSpinBox()
spinbox.setRange(0.0, 1.0)
spinbox.setValue(0.5)
spinbox.show()
app.exec_()
二、qdoublespinbox設置值
如果我們希望在特定場景下設置spinbox的初值,可以使用setValue函數,這個函數接受一個浮點數參數,作為spinbox的初始值。
spinbox = QDoubleSpinBox()
spinbox.setRange(0.0, 1.0)
spinbox.setValue(0.7)
三、qdoublespinbox 右側零
在展示數字時,QDoubleSpinBox默認會在小數點後加上零。如果我們想要去掉這個零,可以使用setDecimals函數設置spinbox小數點後佔位符的個數為0。
spinbox = QDoubleSpinBox()
spinbox.setDecimals(0)
四、qdoublespinbox 科學計數法
QDoubleSpinBox默認展示的是普通的浮點數,但在一些場景下,更希望以科學計數法形式展示。
from PyQt5.QtCore import Qt
spinbox = QDoubleSpinBox()
spinbox.setRange(0.0, 1.0)
spinbox.setDecimals(2)
spinbox.setDisplayScientific(True)
spinbox.setPrefix("Scientific Prefix: ")
spinbox.setSuffix(" Suffix")
spinbox.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
五、qdoublespinbox怎麼更改單位
有些場景下,希望以不同的單位來展示數值,可以使用setSuffix和setPrefix函數設置展示數值前後綴。
spinbox = QDoubleSpinBox()
spinbox.setRange(0.0, 60.0)
spinbox.setSuffix(" min")
spinbox.setPrefix("Time: ")
spinbox.setValue(30.0)
六、qdoublespinbox輸入密碼才能更改
有些時候,我們希望對某些設置進行保護,只有在輸入正確的密碼之後才能修改。可以使用QLineEdit的輸入框,將輸入框和QDoubleSpinBox進行connect。
from PyQt5.QtWidgets import QApplication, QLabel, QLineEdit, QHBoxLayout, QDoubleSpinBox, QVBoxLayout, QWidget
app = QApplication([])
password_edit = QLineEdit()
password_edit.setEchoMode(QLineEdit.Password)
password_label = QLabel("Password:")
password_label.setBuddy(password_edit)
spinbox = QDoubleSpinBox()
spinbox.setRange(0.0, 100.0)
layout = QHBoxLayout()
layout.addWidget(password_label)
layout.addWidget(password_edit)
password_box = QWidget()
password_box.setLayout(layout)
v_layout = QVBoxLayout()
v_layout.addWidget(password_box)
v_layout.addWidget(spinbox)
widget = QWidget()
widget.setLayout(v_layout)
widget.show()
def check_password():
if password_edit.text() == "password":
spinbox.setReadOnly(False)
else:
spinbox.setReadOnly(True)
password_edit.textChanged.connect(check_password)
app.exec_()
七、qdoublespinbox鍵盤事件
可以使用QKeyPressEvent來捕獲鍵盤事件,以實現一些自定義操作。
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QDoubleSpinBox
app = QApplication([])
spinbox = QDoubleSpinBox()
def keyPressEvent(event):
if event.key() == Qt.Key_Escape:
spinbox.setValue(spinbox.minimum())
else:
super().keyPressEvent(event)
spinbox.show()
app.exec_()
八、qdoublespinbox調節按鈕去除
可以使用setButtonSymbols函數將spinbox調節按鈕去掉。
from PyQt5.QtWidgets import QApplication, QDoubleSpinBox
app = QApplication([])
spinbox = QDoubleSpinBox()
spinbox.setRange(0.0, 100.0)
spinbox.setButtonSymbols(QDoubleSpinBox.NoButtons)
spinbox.show()
app.exec_()
九、qdoublespinbox設置值沒反應
有時候,我們會遇到spinbox設置初始值,但界面上並沒有更新的問題。這種情況一般是因為最小值和最大值的設置有誤。
spinbox = QDoubleSpinBox()
spinbox.setRange(0.0, 0.1)
spinbox.setValue(0.05)
十、qdoublespinbox連接信號槽
可以將spinbox和其他的信號槽進行連接,比如將spinbox和其他的控制界面進行連接。
from PyQt5.QtWidgets import QApplication, QDoubleSpinBox, QVBoxLayout, QMainWindow
app = QApplication([])
window = QMainWindow()
central_widget = QWidget()
window.setCentralWidget(central_widget)
spinbox = QDoubleSpinBox()
spinbox.setRange(0.0, 1.0)
spinbox.setSingleStep(0.01)
layout = QVBoxLayout(central_widget)
layout.addWidget(spinbox)
def on_value_changed(value):
print(value)
spinbox.valueChanged.connect(on_value_changed)
window.show()
app.exec_()
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/248301.html
微信掃一掃
支付寶掃一掃