|
2025-07-12 23:29
조회: 431
추천: 0
사냥타이머 문의편한 사냥을 위해
import sys import winsound import threading from PyQt6.QtWidgets import ( QApplication, QMainWindow, QWidget, QVBoxLayout, QLabel, QPushButton, QHBoxLayout ) from PyQt6.QtCore import QTimer, QElapsedTimer, Qt # --- 파라미터 --- INTERVAL_A_MS = 7_500 INTERVAL_B_MS = 56_000 FREQ_A_HZ = 1_000 FREQ_B_HZ = 600 DUR_A_MS = 300 DUR_B_MS = 500 UPDATE_TICK_MS = 100 # UI 갱신 주기 # ---------------- def beep_nonblocking(freq, dur): threading.Thread(target=lambda: winsound.Beep(freq, dur), daemon=True).start() class BeepWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Beeper Deluxe") self.setFixedSize(360, 200) # 절대 시간 타이머 self.elapsed = QElapsedTimer() self.update_timer = QTimer(self) self.update_timer.timeout.connect(self._update_and_beep) # UI self.status_lbl = QLabel("정지", alignment=Qt.AlignmentFlag.AlignCenter) self.timerA_lbl = QLabel("숨돌방지: 0.0s", alignment=Qt.AlignmentFlag.AlignCenter) self.timerB_lbl = QLabel("파운틴: 0.0s", alignment=Qt.AlignmentFlag.AlignCenter) self.start_btn = QPushButton("시작") self.stop_btn = QPushButton("중지") self.stop_btn.setEnabled(False) vbox = QVBoxLayout() vbox.addWidget(self.status_lbl) vbox.addWidget(self.timerA_lbl) vbox.addWidget(self.timerB_lbl) hbox = QHBoxLayout() hbox.addWidget(self.start_btn) hbox.addWidget(self.stop_btn) vbox.addLayout(hbox) container = QWidget() container.setLayout(vbox) self.setCentralWidget(container) # 버튼 연결 self.start_btn.clicked.connect(self.start_beeping) self.stop_btn.clicked.connect(self.stop_beeping) # 상태값 self.is_running = False self.next_a = INTERVAL_A_MS self.next_b = INTERVAL_B_MS def _update_and_beep(self): now = self.elapsed.elapsed() if now >= self.next_a: beep_nonblocking(FREQ_A_HZ, DUR_A_MS) self.next_a += INTERVAL_A_MS if now >= self.next_b: beep_nonblocking(FREQ_B_HZ, DUR_B_MS) self.next_b += INTERVAL_B_MS rem_a = max(0, self.next_a - now) / 1000 rem_b = max(0, self.next_b - now) / 1000 self.timerA_lbl.setText(f"숨돌방지: {rem_a:.1f}s") self.timerB_lbl.setText(f"파운틴: {rem_b:.1f}s") def start_beeping(self): if not self.is_running: self.is_running = True self.status_lbl.setText("실행 중") self.start_btn.setEnabled(False) self.stop_btn.setEnabled(True) # 타이머 초기화 self.next_a = INTERVAL_A_MS self.next_b = INTERVAL_B_MS self.elapsed.restart() # 즉시 삑 beep_nonblocking(FREQ_A_HZ, DUR_A_MS) beep_nonblocking(FREQ_B_HZ, DUR_B_MS) # 업데이트 시작 self.update_timer.start(UPDATE_TICK_MS) def stop_beeping(self): if self.is_running: self.is_running = False self.update_timer.stop() self.status_lbl.setText("정지") self.start_btn.setEnabled(True) self.stop_btn.setEnabled(False) # 초기화 표시 self.timerA_lbl.setText("숨돌방지: 0.0s") self.timerB_lbl.setText("파운틴: 0.0s") def main(): app = QApplication(sys.argv) win = BeepWindow() win.show() sys.exit(app.exec()) if __name__ == "__main__": main() ai로 이런 코드를 exe로 만들어서 사용하려고 하는데 혹시 사용해도 괜찮을까요? 기능은 7.5초와 56초에 한번씩 소리내는 기능 남은 시간 표시해주는 기능 말고는 없습니다
|
메이플스토리 인벤 자유게시판 게시판
인벤 전광판
[원자폭탄] 템 팔고 6개월간 롤하는게 메이플 하는거보다 세짐!
메이플스토리 인벤에 오신 것을 환영합니다~★
[louis] 모두 올 한해 수고하셨습니다 새해엔 좋은 일 가득하길!
[젓가락왕자] 나는 쌀다팜~ 난 이미 쌀다팜ㅋㅋ
[메르맞지] 솔직히 쁘띠 스노우 가능임
