Я добавил LoadBar в свою программу с графическим интерфейсом PySide6, но, похоже, это продолжается бесконечно.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Я добавил LoadBar в свою программу с графическим интерфейсом PySide6, но, похоже, это продолжается бесконечно.

Сообщение Anonymous »

Поэтому я добавил полосу загрузки для некоторых задач, но она длится бесконечно долго, а без ее использования я могу получить результаты менее чем за 10 секунд.
Итак, это мой класс панели загрузки которым я сейчас пользуюсь

Код: Выделить всё

class LoadingDialog(QDialog):
def __init__(self):
super().__init__()

self.setWindowTitle("Working on your task")
self.setWindowFlags(Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint)
self.setFixedSize(300, 100)  # Fixed size dialog

self.progress = QProgressBar(self)
self.progress.setGeometry(30, 40, 240, 30)
self.progress.setRange(0, 0)  # Indeterminate progress bar

self.label = QLabel("Enumerating Please Wait...", self)
self.label.setGeometry(110, 10, 80, 20)

self.setLayout(QVBoxLayout())
self.layout().addWidget(self.label)
self.layout().addWidget(self.progress)

def showEvent(self, event):
super().showEvent(event)
self.progress.setRange(0, 0)  # Start indeterminate progress

def closeEvent(self, event):
super().closeEvent(event)
self.progress.setRange(0, 0)  # Reset progress on close
и я использую его таким образом в своих основных функциях графического интерфейса, где он мне нужен

Код: Выделить всё

        self.loading_dialog.exec()

self.output_text.clear()
self.output_text.append(f"Enumerating subdomains for {domain} using wordlist...\n")

subdomains = self.subdomain_enum(domain, wordlist)
if subdomains:
self.display_subdomains("Wordlist", subdomains)
else:
self.output_text.append("No subdomains found.")

self.loading_dialog.close()
Вот функция, на которую уходит от 10 до 20 секунд, поскольку список слов, который я даю, состоит всего из 10 или 12 слов.

Код: Выделить всё

def subdomain_enum(self, domain, wordlist):
output = []
subdomains = []
with open(wordlist, 'r') as file:
subdomains = file.read().splitlines()

for subdomain in subdomains:
try:
full_domain = f"{subdomain}.{domain}"
result = dns.resolver.resolve(full_domain, 'A')
for ipval in result:
output_line = f'{full_domain} | {ipval.to_text()}'
output.append(output_line)
except Exception as e:
pass

return output
Это для отображения результата, когда поле вывода представляет собой TextBrowser

Код: Выделить всё

def display_subdomains(self, source, subdomains):
self.output_text.append(f"From {source}:")
if subdomains:
for subdomain in subdomains:
self.output_text.append(f"  - {subdomain}")
else:
self.output_text.append(f"  No subdomains found from {source}.")
Я не пробовал много решений, так как не вижу решений по этому поводу в Интернете, поэтому мне нужна помощь. спасибо.

Подробнее здесь: https://stackoverflow.com/questions/787 ... infinitely
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»