pyvideotrans / videotrans /component /set_threads.py
jameson512
Upload files via LFS
1f235c3
Raw
History Blame Contribute Delete
3.67 kB
from PySide6 import QtWidgets
from PySide6.QtGui import QIcon, Qt
from PySide6.QtWidgets import (
QDialog, QLabel, QLineEdit, QVBoxLayout, QHBoxLayout, QPushButton
)
from videotrans.configure.config import ROOT_DIR, tr
from videotrans.util import tools
class SetThreadTransDubb(QDialog):
def __init__(self, parent=None, name='trans', nums=5, sec=0, ai_nums=500):
super().__init__(parent)
self.nums = nums
self.sec = sec
self.name = name
self.ai_nums = ai_nums
# 设置该窗口最小宽高为 400x300
self.resize(400, 250)
self.setWindowIcon(QIcon(f"{ROOT_DIR}/videotrans/styles/icon.ico"))
# 布局
layout = QVBoxLayout()
# layout 顶部对齐
layout.setAlignment(Qt.AlignTop)
# 创建标签和输入框
if name == 'trans':
# 传统翻译
self.label = QLabel(tr("Subtitles lines:"))
else:
self.label = QLabel(tr("Number dubbing threads"))
self.input = QLineEdit()
self.input.setText(str(self.nums))
num_layout = QHBoxLayout()
num_layout.addWidget(self.label)
num_layout.addWidget(self.input)
layout.addLayout(num_layout)
if name == 'trans':
# 设置对话框标题
self.setWindowTitle(tr("Set Translation subtitles rows"))
wait_msg = tr("Wait/s:")
# ai翻译
self.ailabel = QLabel(tr("Number subtitle lines AI translation"))
self.aiinput = QLineEdit()
self.aiinput.setText(str(self.ai_nums))
ainum_layout = QHBoxLayout()
ainum_layout.addWidget(self.ailabel)
ainum_layout.addWidget(self.aiinput)
layout.addLayout(ainum_layout)
else:
wait_msg = tr("Wait/s/1 thread:")
self.setWindowTitle(tr("Number dubbing threads"))
self.wait_label = QLabel(wait_msg)
self.wait_input = QLineEdit()
self.wait_input.setText(str(self.sec))
tips_msg = tr("The number of seconds to pause and wait after each completed request")
self.wait_input.setToolTip(tips_msg)
# 创建按钮
self.ok_button = QPushButton(tr("Save"))
self.ok_button.clicked.connect(self.accept) # 点击OK按钮后关闭对话框
# 设置确认按钮高度为35
self.ok_button.setFixedHeight(35)
wait_layout = QHBoxLayout()
wait_layout.addWidget(self.wait_label)
wait_layout.addWidget(self.wait_input)
layout.addLayout(wait_layout)
tips_label = QLabel()
tips_label.setText(tips_msg)
# OK按钮布局
layout.addWidget(tips_label)
layout.addWidget(self.ok_button)
if name == 'trans':
help_btn = QtWidgets.QPushButton()
help_btn.setStyleSheet("background-color: rgba(255, 255, 255,0);color:#777777")
help_btn.setObjectName("help_btn")
help_btn.setCursor(Qt.PointingHandCursor)
help_btn.setText(tr("Help document"))
help_btn.clicked.connect(lambda: tools.open_url(url='https://pyvideotrans.com/selecttranslate'))
layout.addWidget(help_btn)
self.setLayout(layout)
def get_values(self):
num, wait = self.input.text().strip(), self.wait_input.text().strip()
ainum = 0
if self.name == 'trans':
ainum = int(self.aiinput.text().strip())
try:
num, wait = max(int(num), 1), max(round(float(wait), 1), 0)
except (TypeError,ValueError):
num = 5
wait = 0
return num, wait, ainum