본문 바로가기

HACK/Source

영어단어 암기 프로그램

게임 중에 생각났는데 마우스 포인터를 따라 다니면서 영단어를 띄어주면 금방 외울거 같았다는 생각이 들었다.

word.7z.001
10.00MB
word.7z.002
9.34MB

파이썬으로 제작해서 그런지 생각보다 파일 용량이 크다.

 

실행하면 아무것도 없는 폼이 하나 나오는데

여기에 영단어가 적힌 텍스트 파일을 드래그해서 넣으면 된다.

안에 내용은 단어 / 뜻 순으로 넣어야하며 단어와 뜻을 /(슬래시)로 구분하기 때문에 중간에 꼭 넣어주어야한다.

10초마다 단어가 바뀌며 마우스 포인터를 계속 따라 다닌다.

종료 방법은 작업관리자에서 종료해도 되고

Alt+Tab으로 선택한 후 Alt+F4누르면 종료된다.

게임 중에도 볼 수 있는데 사실 영어단어를 외울 생각이면 롤부터 접어야한다.

 

import os
import sys
import time
import qdarkstyle
from PySide.QtGui import *
from PySide.QtCore import *


class TestListView(QListWidget):
    fileDropped = Signal(list)

    def __init__(self, type):
        super(TestListView, self).__init__()
        self.setAcceptDrops(True)

    def dragEnterEvent(self, event):
        if event.mimeData().hasUrls:
            event.accept()
        else:
            event.ignore()

    def dragMoveEvent(self, event):
        if event.mimeData().hasUrls:
            event.accept()
        else:
            event.ignore()

    def dropEvent(self, event):
        if event.mimeData().hasUrls:
            event.accept()
            links = []
            for url in event.mimeData().urls():
                links.append(str(url.toLocalFile()))
            self.fileDropped.emit(links)
        else:
            event.ignore()


class Setting(QMainWindow):
    def __init__(self):
        super(Setting, self).__init__()
        self.view = TestListView(self)
        self.view.fileDropped.connect(self.drdr)
        self.setCentralWidget(self.view)
        self.setWindowTitle("wordlist")
        self.resize(350, 100)
        self.show()

    def drdr(self, l):
        if os.path.exists(l[0]):
            self.view.clear()
            QListWidgetItem(l[0], self.view)
            with open(l[0], "rb") as f:
                data = f.readlines()

            for x in data:
                word.append(x.split("/")[0])
                text.append(x.split("/")[1])

            self.viewer = Viewer(self)
            self.viewer.show()
            self.close()


class Viewer(QWidget):
    def __init__(self, parent=None):
        super(Viewer, self).__init__()
        self.num = 0
        self.layout = QGridLayout()

        self.label1 = QLabel("TEST")
        self.label1.setFont(QFont('Arial', 15, QFont.Bold))
        self.label2 = QLabel("TEST")
        self.label2.setFont(QFont('Arial', 10, QFont.Bold))

        self.timer = QTimer()
        QObject.connect(self.timer, SIGNAL("timeout()"), self.onTimer)
        self.timer.start(30)

        self.timer2 = QTimer()
        QObject.connect(self.timer2, SIGNAL("timeout()"), self.change)
        self.timer2.start(10000)

        self.layout.addWidget(self.label1, 1, 0)
        self.layout.addWidget(self.label2, 3, 0)

        self.setWindowTitle("wordlist")
        self.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowStaysOnTopHint)

        self.setGeometry(100, 100, 200, 10)
        self.setLayout(self.layout)
        self.show()

    def onTimer(self):
        self.cursor = QCursor.pos()
        self.setGeometry(self.cursor.x()+15, self.cursor.y()+30, 200, 10)

    def change(self):
        try:
            self.label1.setText(word[self.num])
            self.label2.setText(text[self.num].decode("utf-8"))
            self.num += 1

        except IndexError:
            self.num = 0

if __name__ == '__main__':
    word = []
    text = []
    app = QApplication(sys.argv)
    app.setStyleSheet(qdarkstyle.load_stylesheet())
    main = Setting()
    sys.exit(app.exec_())

 

'HACK > Source' 카테고리의 다른 글

simple hash brute force  (0) 2020.02.16