PyQt5 Butona Basinca Islem Yaptirma Hk

**Arkadaşlar Merhaba. Programi actigimda arayuzun bu sekilde gelmesini, Baslat butonuna tikladigimda, belirtigim tuşlara basmasini, stop’a bastigimda da programi durdurmasini istiyorum. Asagidaki gibi yaptigimda arayuz geliyor, Start/Stop dedigimde Text yazdiriyorum ama, start/stop tikladigimda belirtilen tuslara bastiramiyorum. Fakat tus_A ve tus_B fonksiyonlarini class icinde cagirdigimda, belirtilen tuslara basiyor. Ben bunu arayuzde baslat/calistir dedigimde yapmasini istiyorum. Ya da siz olsaniz, belirttigim tuslara, baslat/calistir dedigimizde bunu nasil yapariz. Kodum aşağidaki gibidir. Düzenleyip yanıt verirseniz sevinirim. **

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtGui import QFont
import keyboard
import time




class mainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("v1")
        self.setGeometry(500, 500 ,250, 200)
        self.content()


        self.show()

    def tus_A(self):
        keyboard.press("A")
        time.sleep(0.01)
        keyboard.release("A")
        time.sleep(0.01)

    def tus_B(self):
        keyboard.press("B")
        time.sleep(0.01)
        keyboard.release("B")
        time.sleep(0.01)

        for i in range(10):
            self.tus_A()
            self.time.sleep(0.1)
            self.tus_B()
            self.time.sleep(0.1)


    def content(self):

        self.label = QLabel(self)
        self.label.setText("")
        self.label.move(10,50)
        self.label.setFont(QFont("arial",18, QFont.Bold))

        self.btn = QPushButton(self)
        self.btn.setText("START")
        self.btn.move(10,10)
        self.btn.setStyleSheet("background-color : green")


        self.btn2 = QPushButton(self)
        self.btn2.setText("STOP")
        self.btn2.move(100,10)
        self.btn2.setStyleSheet("background-color : red")



        self.btn.clicked.connect(self.start)
        self.btn2.clicked.connect(self.stop)

        vBox = QVBoxLayout(self)
        vBox.addWidget(self.btn)
        vBox.addWidget(self.btn2)
        vBox.addWidget(self.label)


        hBox = QHBoxLayout(self)

        hBox.addStretch()
        hBox.addLayout(vBox)
        hBox.addStretch()
        self.setLayout(hBox)


    def start(self):
        self.label.setText("Start")

    def stop(self):
        self.label.setText("Stop")






def window():
    app = QApplication(sys.argv)
    win = mainWindow()
    sys.exit(app.exec_())

window()











Burada tuşa basmasını sağlayacak bir şey yok self.tus_B gibi ben mi yanlış anladım ?

Start/stop butonuna tikladigimizda, donguye aldigimiz sayi kadar tuslara bastirmak istiyorum. Bunu yaptiramadim

Burada da dediğim gibi butona basınca tuşlara basmayı tetikleyecek bir şey yok.
Olsa bile

    def tus_B(self):
        keyboard.press("B")
        time.sleep(0.01)
        keyboard.release("B")
        time.sleep(0.01)

        for i in range(10):
            self.tus_A()
            self.time.sleep(0.1)
            self.tus_B()
            self.time.sleep(0.1)

çalışmayacaktır çünkü burada self.time.sleep(0.1) yazıyor time.sleep() olması gerekir

1 Beğeni

start tusuna bastıktan sonra gidilen fonksiyonda bir şey yaptırmadığınızdan dolayı çalışmıyor.
şöyle bir örnekle gerisini halledersinizdiye düşünüyorum.

1 Beğeni

Yardimlariniz icin tesekkur ederim. Eve gecince kodlar uzerinde calisacagim.

Hocam for döngüsünü start fonksiyonu içinde denedim calişti. Teşekkür ederim. Start dedik tuslara bastirmaya basladik, peki stop dedigimizde tuslara basmayi nasil durduracagim. start/stop tuslarına klavyeden baslat/caliştir tusu ekleyebilirmiyim? Ayrıca; programa check box koyacagim, checkbox’a tiklandiginda programi üstte tutacak, yani program arka plana düşmeyecek, veya simge durumuna kücülmeyecek. Ancak, checkbox’in isaretini kaldirdigimda, üstte tutma özelliği duracak. Simge durumuna kücültmek istersek, - işaretine bastigimizda simge durumuna kücülecek. Bunu nasıl yapabiliriz.

Threading kullanın start stop için. Tuş eklemek için bu konudaki kod ile yapabilirsiniz. Pencereyi hep önde yapma kodu

self.setWindowFlags(window.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)

Checkboxa tıklanmayı da butona tıklar gibi yapabilirsiniz.

self.checbox.clicked.connect(self.fonk)

bu fonksiyonun içine de self.checkbox.isChecked() ile if koyup seçilme ile seçmeyi bırakmayı ayırt edebilirsiniz.
Her zaman önde olmayı bırakma kodu

self.setWindowFlags(window.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)

Hocam Treading hakkinda hic bilgim yok. Belki pratik yaptigim projelerde hic karsima cikmadi. Treadingle nasil yapildigina dair kodlamasini yaparmisin. Benim icinde ornek bir kaynak olur.

Şuan evde değilim eve yarın akşam geçeceğim o zaman bir örnek paylaşırım.

1 Beğeni

Buradaki kod işinize yarayacaktır.

1 Beğeni

Teşekkür ederim hocam. Takildigim yerde tekrar sorabilirmiyim.

Elbette sorabilirsiniz.

1 Beğeni