Files
2025-08-14 18:45:16 +08:00

71 lines
2.1 KiB
Python

# coding:utf-8
import sys
from PySide6.QtCore import Qt, QUrl
from PySide6.QtGui import QIcon, QColor
from PySide6.QtWidgets import QApplication, QWidget, QHBoxLayout
from qfluentwidgets import MessageBoxBase, SubtitleLabel, LineEdit, PushButton, CaptionLabel, setTheme, Theme
class CustomMessageBox(MessageBoxBase):
""" Custom message box """
def __init__(self, parent=None):
super().__init__(parent)
self.titleLabel = SubtitleLabel('打开 URL', self)
self.urlLineEdit = LineEdit(self)
self.urlLineEdit.setPlaceholderText('输入文件、流或者播放列表的 URL')
self.urlLineEdit.setClearButtonEnabled(True)
self.warningLabel = CaptionLabel("The url is invalid")
self.warningLabel.setTextColor("#cf1010", QColor(255, 28, 32))
# add widget to view layout
self.viewLayout.addWidget(self.titleLabel)
self.viewLayout.addWidget(self.urlLineEdit)
self.viewLayout.addWidget(self.warningLabel)
self.warningLabel.hide()
# change the text of button
self.yesButton.setText('打开')
self.cancelButton.setText('取消')
self.widget.setMinimumWidth(350)
# self.hideYesButton()
def validate(self):
""" Rewrite the virtual method """
isValid = self.urlLineEdit.text().lower().startswith("http://")
self.warningLabel.setHidden(isValid)
self.urlLineEdit.setError(not isValid)
return isValid
class Demo(QWidget):
def __init__(self):
super().__init__()
# setTheme(Theme.DARK)
# self.setStyleSheet('Demo{background:rgb(32,32,32)}')
self.hBxoLayout = QHBoxLayout(self)
self.button = PushButton('打开 URL', self)
self.resize(600, 600)
self.hBxoLayout.addWidget(self.button, 0, Qt.AlignCenter)
self.button.clicked.connect(self.showDialog)
def showDialog(self):
w = CustomMessageBox(self)
if w.exec():
print(w.urlLineEdit.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Demo()
w.show()
app.exec()