71 lines
2.1 KiB
Python
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() |