Python Pyqt5 for loop döngüsü nasıl kullanırız yardımcı olurmusunuz?

#/usr/bin/env python3
#-*-coding:utf-8-*-

from io import open
import time
import datetime
from datetime import date
import os
import sys
#reload(sys)
#sys.setdefaultencoding("utf-8")
import pymysql
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QApplication, QMainWindow, QProgressBar
from PyQt5.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit, QFileDialog
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QVBoxLayout, QLabel
from PyQt5.QtGui import QFont
from PyQt5.QtCore import QTimer, QTime, Qt, QThread
from whmaingui import Ui_whmain

# Veritabanı bağlantı bilgileri
db = pymysql.connect(host='127.0.0.1',
                             user='barron4335',
                             password='1968_Hram',
                             db='whattack',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

# İşaretçimizi oluşturalım
veritabani = db.cursor()

class ui(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_whmain()
        self.ui.setupUi(self)

    def radiotiklandi(self):
        global secilenradiobtn
        rbtn = self.sender()
        if rbtn.isChecked() == True:
            secilenradiobtn = rbtn.text()
            self.ui.whtur.setText("Wordlist Türü : \n" + secilenradiobtn + "Seçtiniz.")

    def spinsec(self,value):
        global secilenspinbox
        secilenspinbox = str(value)
        self.ui.whhane.setText("Wordlistiniz " + secilenspinbox + " Haneden Oluşacaktır.")

    def fileselected(self):
        global fileName
        options = QFileDialog.Options()
        options |= QFileDialog.DontUseNativeDialog
        fileName, _ = QFileDialog.getSaveFileName(self, "QFileDialog.getSaveFileName()", "",
                                                  "All Files (*);;Text Files (*.txt)", options=options)
        if fileName:
            self.ui.dosyayolu.setText(fileName + " Seçtin.")

    def wholustur(self):
        if secilenradiobtn == "A-Z / a-z":
            print("Alfabetik Wordlist Oluşturma Seçildi.")
            if secilenspinbox == "1":
                alfabelist = ['f','g','ı','o','d','r','n','h','p',\
                              'q','w','u','e','a','t','k','m','l',\
                              'y','x','j','v','c','z','s','b']

                print( secilenspinbox + " Haneden Oluşacaktır")

                i = 1
                for password in alfabelist:
                    print(f"{i}-) Şifre = {password}")
                    self.ui.sonuc.setPlainText(f"{i}-) Şifre = {password}")
                    i += 1

        elif secilenradiobtn == "0-9":
            print("Sayısal Wordlist Oluşturma Seçildi.")
        elif secilenradiobtn == "A-Z / a-z / 0-9":
            print("Alfabetik ve Sayısal Wordlist Oluşturma Seçildi.")
        elif secilenradiobtn == "A-Z / a-z / 0-9 / Özel Karakterler":
            print("Alfabetik , Sayısal ve Özel Karakter Wordliist Oluşturma Seçildi.")



app = QApplication([])
pencere = ui()
pencere.show()
app.exec_()

ui :

for çalışmıyor nasıl ui de bulunan sonuc etiketli qtextedit bölümün içine forla yazdırtabilirim?

yardım edebilecek kişi veya kişiler yok sanırım

her hangi bir hata alıyor musunuz?

hata almıyorum yanlız for döngüsünün çıktınısını uide bulunan sonuc etiketli qtextedit içine yazdırmak istiyorum

döngü hatalı çalıştığını sanmıyorum. arayüz olduğundan dolayı büyük ihtimal oluşturduğunuz listenin sadece son elemanını yazmıştır.

i=1
sep=""
for password in alfabelist:
    sep=sep+f"{i}-) Şifre = {password}\n"
    self.ui.sonuc.setPlainText(sep)
    i += 1

ya da:

i=1
sep=""
for password in alfabelist:
    sep=sep+f"{i}-) Şifre = {password}\n"
    i += 1
self.ui.sonuc.setPlainText(sep)

bunları deneyebilirsiniz.

1 Beğeni

DeepinEkranGörüntüsü_alan-seç_20201207230910

eğer dediğinden emin olsaydınız şuan bakıp çalıştığından emin olabilirsiniz lakin benim amacım qthread kullanarak nasıl ui de yansıtabilirim onu çözemedim

ayrıca qplain demedim qtextedit demiştim sorumu dikkatli okursanız sevinirim

teşekkür ederim
oldu

    if secilenspinbox == "15":
        print( secilenspinbox + " Haneden Oluşacaktır")
        i = 1
        sep = ""
        for password1 in alfabelist:
            for password2 in alfabelist:
                for password3 in alfabelist:
                    for password4 in alfabelist:
                        for password5 in alfabelist:
                            for password6 in alfabelist:
                                for password7 in alfabelist:
                                    for password8 in alfabelist:
                                        for password9 in alfabelist:
                                            for password10 in alfabelist:
                                                for password11 in alfabelist:
                                                    for password12 in alfabelist:
                                                        for password13 in alfabelist:
                                                            for password14 in alfabelist:
                                                                for password15 in alfabelist:
                                                                    sep = sep + f"{i}-) Şifre = {password1}{password2}{password3}{password4}{password5}{password6}{password7}{password8}{password9}{password10}{password11}{password12}{password13}{password14}{password15}\n"
                                                                    i += 1
                                                                    self.ui.sonuc.setPlainText(sep)
                                                                    print(f"{i}-) Şifre = {password1}{password2}{password3}{password4}{password5}{password6}{password7}{password8}{password9}{password10}{password11}{password12}{password13}{password14}{password15}")

bu kodu çalıştırdığım zaman ui donuyor donmaması için ne yapabilrim?

bu kadar döngü çalışırken donmaması imkansız. bence siz itertools permutations’i inceleyin. aradığınız şey o olabilir.

1 Beğeni

inceledim ama entegre edemedim yardımcı olurumusunuz bu hususta?

Aşağıdaki kodu kendi kodunuza uyarlayabilirsiniz.

from itertools import permutations

sequence = "hello"
for perm in permutations(sequence, len(sequence)):
    print("".join(perm))
1 Beğeni

şimdi sayın hocalarım ben bu uide spinboxda 8 den 15 a kadar sayı seçdirip for kullanarak oluşturmak ama aynı zamanda sonuc etiketli plain texte yazdırtmak foru @denklem hocamla hallettik ama takılmalar yaşamaktayım
bir kaç ingiliz grubunda thread dediler ama kimse tam olarak yardımcı olamadı bu hususta

Eğer hallettik dediğiniz for döngüsü, yukarıda iç içe yazdığınız for döngülerinden ibaretse, işte o kısmı silmenizi, yerine sizinle paylaştığım kodu kendi kodunuza uyarlayarak eklemenizi tavsiye ederim. Bunu yaptıysanız ve hala donma sorunu yaşıyorsanız, Qt bilen arkadaşların önerdiği gibi qthread kullanmanız belki donma sorununu çözer.

alfabelisti str şeklinde alfabe içine yazıp, spinboxta girilen sayıyı da “sayi” değişkenine atayın.

from itertools import permutations
sayi=3
i = 1
sep = ""
alfabe = "abcdef"
for perm in permutations(alfabe,sayi):
    sep = sep+str(i)+"-)" +"".join(perm)+"\n"
    self.ui.sonuc.setPlainText(sep)
    print("".join(perm))
    i += 1

kısaca o kadar for döngüsü yerine yukarıdaki yazdığım kodu kullanabilirsiniz.

bu şekilde sayı örneğin 9 seçtiğinde 9 kere for kullanmaktansa yan yana 9 kere tekrarlayacakmı bilmediğim için soruyorum kusuruma bakmayınız

for password in permutations(alfabelist, sayi):
TypeError: Expected int as r

hatası aldım sizi rahatsız ettim bu arada kusura bakmayın

ayrıca hala bloklama var yani zorla çık veya bekle hatası almaktayım ve size özelden ui ve kodu atsam geri kalan sorunlarımı size danışsam olur mu tabi vaktiniz varsa?

oraya 9 yazdığınızda alfabelistten 9 karakterli ne kadar farklı şifre oluşturuluyorsa o kadar şifre oluşturur. yani binlerce olabilir.

alfabelist=“abcdefgh…” şeklinde yazdınız mı?

atabilirsiniz.