支持拖入视频文件,移除命令行参数

This commit is contained in:
QQ 2026-07-07 11:08:22 +08:00
parent 9081d3e585
commit 0afaec558f
1 changed files with 13 additions and 3 deletions

16
main.py
View File

@ -55,6 +55,7 @@ class FrameView(QLabel):
self.setAlignment(Qt.AlignmentFlag.AlignCenter) self.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.setStyleSheet("background: #1a1a1a; border: 1px solid #333;") self.setStyleSheet("background: #1a1a1a; border: 1px solid #333;")
self.setMouseTracking(True) self.setMouseTracking(True)
self.setAcceptDrops(True)
self._frame: Optional[np.ndarray] = None self._frame: Optional[np.ndarray] = None
self._pixmap: Optional[QPixmap] = None self._pixmap: Optional[QPixmap] = None
@ -71,7 +72,8 @@ class FrameView(QLabel):
self._block_clicks: bool = False self._block_clicks: bool = False
self.on_point_selected = None self.on_point_selected = None
self.on_key_pressed = None # 键盘回调 self.on_key_pressed = None
self.on_file_dropped = None
@property @property
def reference_ready(self) -> bool: def reference_ready(self) -> bool:
@ -136,6 +138,15 @@ class FrameView(QLabel):
self.on_key_pressed(event.key()) self.on_key_pressed(event.key())
super().keyPressEvent(event) super().keyPressEvent(event)
def dragEnterEvent(self, event) -> None:
if event.mimeData().hasUrls():
event.acceptProposedAction()
def dropEvent(self, event) -> None:
urls = event.mimeData().urls()
if urls and self.on_file_dropped:
self.on_file_dropped(urls[0].toLocalFile())
def paintEvent(self, event) -> None: def paintEvent(self, event) -> None:
super().paintEvent(event) super().paintEvent(event)
painter = QPainter(self) painter = QPainter(self)
@ -242,6 +253,7 @@ class MainWindow(QMainWindow):
self.frame_view = FrameView() self.frame_view = FrameView()
self.frame_view.on_point_selected = self._on_point_changed self.frame_view.on_point_selected = self._on_point_changed
self.frame_view.on_key_pressed = self._on_key_pressed self.frame_view.on_key_pressed = self._on_key_pressed
self.frame_view.on_file_dropped = self.load_video
# 右侧面板(弹性宽度) # 右侧面板(弹性宽度)
panel = QWidget() panel = QWidget()
@ -764,8 +776,6 @@ def main():
""") """)
window = MainWindow() window = MainWindow()
if len(sys.argv) > 1:
window.load_video(sys.argv[1])
window.show() window.show()
sys.exit(app.exec()) sys.exit(app.exec())