Уведомления

Группа в Telegram: @pythonsu

Уведомления

  • Found 3476 posts.

Центр помощи » Помочь с реструктуризацией моего приложения » Фев. 19, 2024 18:27:11

Я написал приложение, которое удовлетворяет некоторые мои нужды по работе. Я не опытен в коммерческом написании приложений. Если кто-то опытный мог бы дать хорошую обратную связь, и предложить как правильно было бы организовать файлы и модули и классы и функции в моем приложении, я был бы очень благодарен.
В своем приложении я использую простые библиотеки: tkinter, sqllite3, pandas, openpyxl

Центр помощи » Задача на переливания (не простая) » Фев. 5, 2024 20:36:16

Есть два сосуда, первый объемом A литров, второй объемом B литров, а также кран с водой. Они могут выполнять следующие операции:

Наполнить сосуд A (обозначается >A).
Наполнить сосуд B (обозначается >B).
Вылить воду из сосуда A (обозначается A>).
Вылить воду из сосуда B (обозначается B>).
Перелить воду из сосуда A в сосуд B (обозначается как A>B).
Перелить воду из сосуда B в сосуд A (обозначается как B>A).
Команда переливания из одного сосуда в другой приводят к тому, что либо первый сосуд полностью опустошается, либо второй сосуд полностью наполняется.

Входные данные

Программа получает на вход три натуральных числа A, B, N, не превосходящих 10**4.

Выходные данные

Необходимо вывести алгоритм действий, который позволяет получить в точности N литров в одном из сосудов, если же такого алгоритма не существует, то программа должна вывести текст Impossible.

Количество операций в алгоритме не должно превышать 10**5. Гарантируется, что если задача имеет решение, то есть решение, которое содержит не более, чем 10**5 операций.

Примеры

входные данные

3
5
1
выходные данные

>A
A>B
>A
A>B
входные данные

3
5
6
выходные данные

Impossible

Python для новичков » Многострочные заголовки для таблицы » Янв. 25, 2024 13:54:20

Здравствуйте, подскажите можно ли создать многострочный заголовок для таблицы, я использую tk Treeview, хотел бы объединить некоторые заголовки столбцов по типу:
картинка в облаке маил ру
или куда копать
заранее спасибо

Центр помощи » Создание папки работа с файлами через блакнот ,что делать ??? » Янв. 16, 2024 19:56:00

Создать папку с названием Работа с файлами.

2. В этой папке с помощью программы Блокнот создать текстовый файл с названием: Qaz.txt.

3. При помощи Python создать файл с названием Work1.py.

ЭТИ ДВА ФАЙЛА ДОЛЖНЫ НАХОДИТЬСЯ В ОДНОЙ ПАПКЕ С НАЗВАНИЕМ Работа с файлами.

4. Далее набрать текст в файле Work1.py

f open ('Qaz.txt', ‘r’)

firstline f.readline()

secondline f.readline()

print (firstline)

print (secondline)

f.close()

Первая строка открывает файл. Прежде чем читать данные из любого файла, его необходимо открыть (подобно тому, как вы открываете электронную книгу на своем устройстве или в приложении, чтобы читать ее). Функция ореn () открывает файл и

получает два аргумента.

Первый аргумент содержит путь к файлу. Если вы не сохранили файлы Work1.ру и Qaz.txt в одном каталоге, строку ‘Qaz.txt’ нужно будет заменить фактическим каталогом, в

котором был сохранен файл.

Второй аргумент содержит режим. Он сообщает, как будет использоваться файл. Чаще

всего встречаются следующие режимы:

'г'- только для чтения.

'w'- только для записи.

Если указанный файл не существует, он будет создан.

Если указанный файл существует, то все данные в нем стираются.

'а' - для присоединения.

Если указанный файл не существует, он будет создан.

Если указанный файл существует, то все данные, записываемые в файл, автоматически

добавляются в конец файла.

'r+' для чтения и записи.

После открытия файла следующая команда firstline f.readline() читает первую

строку в файле и присваивает ее переменной firstline.

При каждом вызове функции readline() из файла читается новая строка. В нашей программе функция readline() была вызвана дважды, поэтому из файла были прочитаны две строки.

5. Отчет сделать при помощи текстового редактора Ms Word, в него

поместить скриншоты результата работы программы.

Python для новичков » Ошибка в Mayavi - VTK » Янв. 16, 2024 12:07:46

Потребовалось код, написанный на Питон 3.11, MAYAVI 4.8.1 и VTK 9.2.6, запустить на Питон 3.5.2, Mayavi 4.8.0 , VTK 8.1.2. Код запустился, но с ошибками.
Одна из которых следующая: “TraitError: The ‘outline_color’ trait of an OrientationMarketWidget instance must be a turple, but a value of ‘_9928288p_void’ was specified”.
Не смог найти, откуда берется этот “аутлайн_колор”.
Может, кто имел дело с Mayavi и ВТК?
Заранее спасибо.

Центр помощи » Как прикрутить к инлайн кнопке ещё несколько » Дек. 17, 2023 12:00:39

Добрый день, начал ковыряться с питоном, решил сделать бота с методичкой бариста, и не могу понять как сделать так, чтобы при нажатии второй инлайн кнопки, выводились ещё несколько кнопок
 import telebot 
import sqlite3 
from telebot import types 
 
token = "" 
bot = telebot.TeleBot(token=token) 
admins = 11111111 
 
conn = sqlite3.connect('kofetoria.db', check_same_thread=False) 
cursor = conn.cursor() 
 
def db_table_val(user_id: int, username: str): 
 cursor.execute('INSERT OR IGNORE INTO test (user_id, username) VALUES (?, ?)', (user_id, username)) 
 conn.commit() 
 
@bot.message_handler(commands=["start"]) 
def repeat_all_messages(message): 
    # создаем клавиатуру 
    keyboard = types.InlineKeyboardMarkup() 
 
    # добавляем на нее две кнопки 
    button1 = types.InlineKeyboardButton(text="сделать заказ", callback_data="button1") 
    keyboard.add(button1) 
 
    if message.chat.id == admins: 
        button2 = types.InlineKeyboardButton(text="помощь для бариста", callback_data="button2") 
        keyboard.add(button2) 
 
    # отправляем сообщение пользователю 
    bot.send_message(message.chat.id, "Нажмите кнопку!", reply_markup=keyboard) 
 
    us_id = message.from_user.id 
    #adm = message.from_user.admin 
    username = message.from_user.username 
    db_table_val(user_id=us_id, username=username) 
 
 
# функция запустится, когда пользователь нажмет на кнопку 
@bot.callback_query_handler(func=lambda call: True) 
def callback_inline(call): 
    if call.message: 
        if call.data == "button1": 
            bot.send_message(call.message.chat.id, "В разработке") 
 
#@bot.callback_query_handler(func=lambda call: True) 
#def callback_inline(call):            
        if call.data == "button2": 
            keyboard = types.InlineKeyboardMarkup() 
            button2 = types.InlineKeyboardButton(text="huy", callback_data="button2") 
            keyboard.add(button2) 
            bot.send_message(call.message.chat.id, "Вы нажали на вторую кнопку.") 
 
bot.polling(none_stop=True)

Django » Изменение данных столбца в django-tables2 » Ноя. 24, 2023 14:37:52

Всем привет,

никак не могу вывести ссылки на страницу в столбце таблицы, сделанной с помощью django-tables2…
У кого-то есть опыт или ссылка, где есть работающий код? Документация не помогла…

Я из таблицы Gost с двумя текстовыми полями ('name', ‘short_name’) создаю класс GostTable.
Он выводит таблицу, все нормально. Но вместо имени name я хочу сформировать и вывести ссылку на страницу с подробностями,
которая формируется с помощью get_absolute_url() .
Что для этого нужно добавить в этот класс?

 class GostTable(tables.Table):
    class Meta:
        model = Gost
        template_name = "django_tables2/bootstrap.html" 
        fields = ('name', 'short_name')

Python для новичков » Отправка формы fastapi  » Ноя. 14, 2023 09:08:37

Доброе утро!
Пытаюсь отправить форму в шаблоне есть форма
 <form action="/upload" method="post" enctype="multipart/form-data">
                          <label for="pdfformmail{{indexfile}}">Загрузить</label>
                          <input enctype type="file" onChange=selectFile(this)  name="pdfformmail" id="pdfformmail{{indexfile}}">
                        </form>

в файле app.py
 from fastapi import FastAPI, Request,UploadFile, File
import webbrowser
.....
@app.post("/upload")
def upload_file(file: UploadFile):
      return file

При запуске скрипта падает со словами
RuntimeError: Form data requires “python-multipart” to be installed.
You can install “python-multipart” with:

pip install python-multipart

При этом python-multipart установлен
……
pydantic_core 2.6.3
pyinstaller 6.0.0
pyinstaller-hooks-contrib 2023.9
python-multipart 0.0.6
setuptools 68.2.2
sniffio 1.3.0
starlette 0.27.0
…….

В чем может быть ошибка?

Data Mining » vsekuhnitut.ru - кухни, прихожие, гардеробные, шкафы и другая корпусная мебель от производителя на заказ по индивидуальным размерам » Ноя. 9, 2023 05:37:18


В нашем мебельном магазине вы можете приобрести:
• Кухни и готовые сеты
• Шкафы и шкафы-купе
• Прихожие
• Мебель для спальни
• Гардеробные
• Прачечные
• Гостиные в современном стиле
• Детские комнаты
• Кабинеты
• Журнальные или кухонные столики
• Мебель из мрамора и гранита
• Фасады и столешницы для кухни
• Корпуса
• Наполнение

Преимущества нашего сервиса:
• Быстрые сроки изготовления
• Широкий выбор мебели
• Постоянное пополнение каталога
• Выгодные цены на рынке

Адрес магазина, каталог и другие контакты у нас на сайте: vsekuhnitut.ru

Data Mining » rankstore.net - cs2 boost, boost faceit, premier, matchmaking in cs2. » Ноя. 9, 2023 05:37:03


Constant training, analysis of player demos, study of spreads, grenades do not give the desired result?

BOOST SERVICE R
ankStore will help you with this:
— The booster team consists of 4k+ ELO players on the faceit and 20,000+ rating in the premier;
— The service has a faceit, premier, matchmaking calculator;
— Possibility of boost WITHOUT account transfer;
— Analysis of maps and demos

THERE IS A 20% DISCOUNT ON YOUR FIRST ORDER

You can order here:
rankstore.net

Data Mining » rankstore.org - буст кс2, буст премьер, фейсит, матчмейкинг в кс2. » Ноя. 9, 2023 05:36:47


Постоянные тренировки аима, разборы демок про-игроков, изучение раскидок гранат не дают должного результата?

БУСТ-СЕРВИС RankStore поможет тебе с этим:
— Команда бустеров состоит из 4k+ ELO игроков на фейсите и 20 000+ рейтинга в премьере;
— На сервисе имеется калькулятор фейсит, премьер, матчмейкинг;
— Возможность буста БЕЗ передачи аккаунта;
— Также разбор карт и демок.

Заказать буст можно:
Сайт – rankstore.org
TG – @rankstorecs
VK - vk.com/rankstorecs

Data Mining » Dolphex.io - обмен BTC, ETH, USDT, USDC, Сбербанк, Тинькофф RUB, Банки » Ноя. 9, 2023 05:36:28

Надежный обмен самых популярных электронных валют на выгодных условиях.

Направления обмена:
Bitcoin
Bitcoin BEP20
Ethereum
USDT (TRC, BEP20),
USDC (TRC)
Сбербанк
Тинькофф
Киви
СБП Карты МИР
Visa/Mastercard RUB

Преимущества нашего сервиса:
• Свой телеграм канал + закрытая группа;
• Широкий выбор валют;
• Постоянные обновления и улучшения сервиса;
• Выгодная программа лояльности.

Наши контакты:
• Наш сайт: https://dolphex.io/
• Телеграм: https://t.me/dolphex
• E-mail: info@dolphex.io
• ВКонтакте: https://vk.com/dolphex

Python проекты » Ищу исполнителя, который запустит Yolov8 на TensorRT » Окт. 20, 2023 16:15:00

Рабочий проект с Yolov8, обученные модели в формате .pt и запускаются с pyTorch + GPU. Поиск объектов в реальном времени после граба экрана. Есть конвертация моделей с .pt в .engine. Скорость работы ~115 кадров в секунду. Решил увеличить скорость и перейти с PyTorch на TensorRT.

Задача: запустить модели формата .engine с помощью TensorRT для Yolov8.
Работу оплачу через любой фриланс (fiverr, kwork и т.д.) или напрямую вам после выполнения.
Связаться можно в телеграм - https://t.me/Kirill_kio

Python для новичков » Критерий Манна-Уитни для экспериментальных данных » Окт. 16, 2023 02:04:45

Рассчитать критерий Манна-Уитни для экспериментальных данных.

Дано. Две таблицы с одинаковым количеством строк и разным количеством столбцов T1 И T2. В таблице T1 хранятся результаты экспериментов в контрольной группе, в T2 - результаты экспериментальной группы.

В каждой из строк хранятся данные о разных измерениях

Найти. Критерий Манна-Уитни для каждой пары строк из T1 и T2. Сделать вывод о результативности эксперимента. Например, для строк T1 и T2

Для решения задачи написать собственную функцию.

Расчет критерия Манна-Уитни можно посмотреть например здесь: https://studopedia.net/13_74222_podschet-kriteriya-U-manna-uitni.html

Автоматизация бизнеса » Пишу скрипты для BAS только на запросах » Сен. 15, 2023 21:26:44


Скрипт для накрутки рефералов в Android-приложении

Скрипт зарегистрировал 49000 аккаунтов на сайте менее, чем за 2 часа.

Пишу BAS-скрипты на запросах для несложных сайтов и Android-приложений.​

Качественная разработка проектов для автоматизации действий в браузере, приложениях и др. парсеры, регеры, грабберы, чекеры, спамеры и. т. д.
Загрузка файлов, фотографий на сайты, хостинги, фотостоки.
Абуз Окея, Пятерочки, Магнита, Ашана, Магнита, аирдропов и др. акций
Накрутка банеров, рекламных объявлений, сокращённых ссылок.
Чекер SMS и капча-сервисов, европейских и американских банков, других форумов, интернет-магазинов, где нужно подобрать пароль.
- Регистраторы. Боты для регистрации на различных сайтах (фрихостинги, форумы, почтовые сервисы, соцсети, дедики и т.д). Создание аккаунтов в промышленных масштабах (с автоматическим распознаванием капчи и вводом подтверждения кода из SMS).

- Постеры. Боты для постинга (постинг на доски объявлений, наполнение сайтов контентом, загрузка видео, картинок, размещение комментариев и. т.д ).

- Парсеры. Боты для сбора, отслеживания и анализа информации с различных интернет ресурсов в автоматическом режиме.

- Боты для социальных сетей (программы для smm на заказ). Накрутка лайков, приглашение в группы, парсинг пользователей по критериям, отправка личных сообщений, наполнение групп и. т.п.

Автоматизировать можно вообще все, что вы делаете вручную в браузере.
Поддержка:
- многопоточность
- прокси HTTPs / SOCKS5
- генерация отпечатков браузера
- генерация имени, фамилии и других данных
- спинтакс - генератор уникального текста, пример: {Привет|Здравствуй|Добрый день}
- уникализация изображений
- подгрузка UserAgent и других заголовков
- интеграция по API с SMS сервисами (сервисы распознавания капчи)
- интеграция по API с другими сервисами и сайтами
- оповещения в Telegram
- другие задачи связанные со входами в аккаунт и выполнением желаемых действий
- и многое другое
Работаю на честных условиях без предоплаты. Для очень простых сайтов - напишу скрипт бесплатно!

Для написания бота, нужен сайт и желательно видео с порядком действий, чтобы я эти действия мог прописать в боте, но если на сайте есть Cloudflare , то на запросах (POST/GET) не выйдет написать бота, на эмуляции не пишу(медленно слишком).

По всем вопросам пишите: Telegram ༺Leͥgeͣnͫd༻ ᴳᵒᵈ или T_Condor

Я НЕ пишу скрипты под десктопные приложения.
Я НЕ пишу ботов для Telegram.
Я НЕ пишу чекеры для СНГ банков.
Я НЕ пишу скрипты для сайтов, на которых присутствует Cloudflare



Скрипт скачивает картинки-мемы в папку с сайта (в итоге скачано более 41000 мемов)

Сокращатель ссылок bit.ly. Создание множества редиректов.

Python для новичков » Всплывающее окно в калькуляторе на pyqt6 » Сен. 14, 2023 20:47:15

Сейчас учу PyQt по этому курсу https://www.youtube.com/playlist?list=PL0lO_mIqDDFXeDkOLHmEsL_HAEhw4-xDX . На 4 уроке мужик делает всплывающие окно при ошибке. У меня красным подчеркивало названия кнопок для этого окна и понял, что ошибка из за разницы pyqt5 (гайд) и pyqt6 (с которым я работаю). https://ru.stackoverflow.com/questions/1400558/setstandardbuttonsqmessagebox-cancel-%d0%b2-pyqt6?noredirect=1&lq=1 По аналогии с этой ошибкой пытался исправить проблему, но всплывающие окно все равно не появляется. Прошу, помогите. Заранее извиняюсь, за глупый вопрос, за непонятную формулировку и тд. Буду рад, если подробно объясните в чем не прав. Вот код:

(Часть кода, где показывается результат счета, а всплывающее окно, должно появляться когда после вывода результата, повторно нажимается ровно)
def results(self):
if not self.is_equal:
res = eval(self.label.text())
self.label.setText(“Результат: ” + str(res))
self.is_equal = True
else:
error = QMessageBox()
error.setWindowTitle(“ОШИБКА”)
error.setText(“Сейчас это действие выполнить нельзя”)
error.setIcon(QMessageBox.setIcon(Warning))
error.setStandardButtons(QMessageBox.StandardButton.Ok|QMessageBox.StandardButton.Cancel)

error.exec_()

Django » Добавление записи в таблицу "Django" » Сен. 7, 2023 08:47:56

Добрый день! Пишу первый web проект на Django
Пытаюсь реализовать справочник стран и городов в них
Есть 2 модели:

 class Strana(models.Model): # 1 модель
    name_s = models.CharField('Наименование', max_length=70)
    def get_absolute_url(self): 
        return reverse('spr_strana')
    def get_UpdateUrl(self):
        return reverse('update_str_strana',kwargs={'pk':self.pk})
    
    def get_DeleteUrl(self):
        return reverse('delete_str_strana',kwargs={'pk':self.pk})
class Gorod(models.Model): #2 модель
   id_strana=models.ForeignKey(Strana, on_delete=models.CASCADE)
   name_g = models.CharField('Наименование', max_length=70)

Вопрос: после того как я добавил запись в модель strana, как мне добавить запись в модель gorod к определенной записи модели strana?

Python для новичков » Игра на kivy python » Авг. 30, 2023 06:31:48

Доброго дня. В целях самообучения пишу игрушку.
Использую pycharm на windows 10
Цель игры погасить кнопку на реакцию.
Проблема: после нескольких переключений поле заполняется и дальше нужно перезапускать.

Вот код:
from kivy.clock import Clock
from kivy.metrics import dp
from kivy.uix.button import Button
from random import randint
from kivymd.app import MDApp
from kivymd.uix.menu import MDDropdownMenu
from kivymd.uix.snackbar import Snackbar
from kivymd.uix.gridlayout import MDGridLayout
from kivymd.uix.toolbar import MDTopAppBar

class Catch(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.change_random_button = None

def build(self):
self.theme_cls.primary_palette = “Orange”
self.theme_cls.theme_style = “Light”

self.gl = MDGridLayout(rows=2)
self.tb = MDTopAppBar(title=“SPEED REACTION”, anchor_title=“left”, size_hint_y=None, height=.5, specific_text_color=“white”,
right_action_items=[])
self.menu_items = [
{
“viewclass”: “OneLineListItem”,
“text”: “Новая игра”,
“height”: dp(35),
“on_release”: self.file_manager_open,
},
{
“viewclass”: “OneLineListItem”,
“text”: “Продолжить”,
“height”: dp(35),
“on_release”: self.menu_seve,
},
{
“viewclass”: “OneLineListItem”,
“text”: “Настройки”,
“height”: dp(35),
“on_release”: self.menu_delet,
},
{
“viewclass”: “OneLineListItem”,
“text”: “Закрыть”,
“height”: dp(35),
“on_release”: self.on_menu_close,
}
]
self.menu = MDDropdownMenu(caller=self.tb, items=self.menu_items, width_mult=4)

self.buttons =
self.grid = MDGridLayout(cols=4, padding5, 10, 5, 5), spacing=2)

# Создание и добавление кнопок на сетку
for i in range(16):
button = Button(on_release=self.button_pressed)
self.grid.add_widget(button)
self.buttons.append(button)

# Загасить случайную кнопку
self.buttons.background_normal = ‘'
self.count = 0
Clock.schedule_interval(self.change_button, 0.5)

self.gl.add_widget(self.tb)
self.gl.add_widget(self.grid)

return self.gl

def callback(self, button):
self.menu.open()

def menu_callback(self, text_item):
self.menu.dismiss()
Snackbar(text=text_item).open()

def button_pressed(self, instance):
if instance.background_normal == ’':
instance.background_normal = ‘atlas/data/images/defaulttheme/button’
self.buttons.background_normal = ''

def change_button(self, dt):
self.buttons.background_normal = ‘'
for button in self.buttons:
if button.background_normal == ’':
button.background_normal = ‘atlas/data/images/defaulttheme/button’
self.count += 1
if self.count >= 3:
return
break

def file_manager_open(self):
print(“open”)

def menu_seve(self):
print(“Save as”)

def menu_delet(self):
print(“removal”)

def on_menu_close(self, *args):
self.stop()

Catch().run()
Буду благодарен за пинок в нужную сторону.

Network » DNS Сканирование » Авг. 21, 2023 14:12:44

Здравствуйте когда я запускаю dns сканер из скрипта python то всё хорошо, но когда я запускаю его как файл exe то вылезает сообщение скриншот которого я прикрепил, скажите пожалуйста в чём причина ошибки и как её исправить? Если я сделал что-то не так или не так написал, заранее извиняюсь.

 import re
import socket
from ipaddress import ip_network, ip_address
import dns
from colorama import Fore
from colorama import init
from dns import resolver
from requests import get, exceptions
import pyfiglet
shrft = pyfiglet.figlet_format("DNS-Scan-blacklist")
print(shrft)
init()
# проверка адреса в диапазоне cloudflare
def ip_in_range(ip, addr):
    if ip_address(ip) in ip_network(addr):
        return True
    return False
# загрузка списка диапазонов адресов cloudflare
# запуск функции проверки ip-адреса
def cloudf_detect(ip):
    list_addr = ["104.16.0.0/12"]
    url = 'https://www.cloudflare.com/ips-v4'
    req = get(url=url)
    for adr in req.text.split("\n"):
        list_addr.append(adr)
    for addr in list_addr:
        detect = ip_in_range(ip, addr)
        if detect:
            return True
    return False
# получение внешнего ip-адреса компьютера
def public_ip():
    try:
        return get('https://api.ipify.org/').text
    except exceptions.ConnectionError:
        return '127.0.0.1'
# загрузка списка DNSBL, получение информации о наличии адреса в списках
def dns_bl_check(ip):
    print(Fore.YELLOW + '\n- Проверка черных списков\n')
    bad_dict = dict()
    req = get('https://raw.githubusercontent.com/evgenycc/DNSBL-list/main/DNSBL')
    read = req.text.splitlines()
    for serv in read:
        req = f"{'.'.join(reversed(ip.split('.')))}.{serv.strip()}"
        try:
            resolv = dns.resolver.Resolver()
            resolv.timeout = 5
            resolv.lifetime = 5
            resp = resolv.resolve(req, 'A')
            resp_txt = resolv.resolve(req, 'TXT')
            print(Fore.RED + f'{serv.strip():30}: [BAD]')
            pattern = '(?:https?:\/\/)?(?:[\w\.]+)\.(?:[a-z]{2,6}\.?)(?:\/[\w\.]*)*\/?'
            find = re.findall(pattern, str(resp_txt[0]))
            if len(find) == 0:
                find = ['No address']
            bad_dict.update({serv.strip(): f'{resp[0]} {find[0]}'})
        except dns.resolver.NXDOMAIN:
            print(Fore.GREEN + f'{serv.strip():30}: [OK]')
        except (dns.resolver.LifetimeTimeout, dns.resolver.NoAnswer):
            continue
    if len(bad_dict) > 0:
        len_str = len(f'IP-АДРЕС: "{ip.upper()}" ОБНАРУЖЕН В ЧЕРНЫХ СПИСКАХ')
        print(Fore.BLUE + f'\nIP-АДРЕС: {ip.upper()} ОБНАРУЖЕН В ЧЕРНЫХ СПИСКАХ\n{"*"*len_str}')
        for bad in bad_dict:
            print(f' - {Fore.YELLOW + bad:30} : {Fore.RESET +bad_dict[bad]}')
    else:
        print(Fore.GREEN + '\n[+] IP-адрес в черных списках не обнаружен')
# получение пользовательского ввода
# запуск проверки на принадлежность адреса к cloudflare
# запуск проверки адреса в DNSBL
def main():
    print(Fore.CYAN + f'\n- Ваш внешний IP-адрес: {public_ip()}')
    addr_input = input('- Введите IP-адрес или домен для проверки\n  Для выхода введите "x"\n  >>> ')
    if addr_input.lower() == "x":
        exit(0)
    ip = ''
    try:
        ip = socket.gethostbyname(addr_input)
    except socket.gaierror:
        print(Fore.RED + '\n - Не удалось получить IP-адрес')
        exit(0)
    if cloudf_detect(ip):
        print(Fore.RED + f'\n[!] ВНИМАНИЕ! Обнаружен адрес Cloudflare: {ip}')
    dns_bl_check(ip)
if __name__ == "__main__":
    main()

Python для новичков » Изменить размер и положение окна Pygame » Авг. 20, 2023 10:59:07

Всех приветствую!

Как можно изменить положение на экране и размер окна (Pygame) после его создания, задавая новые координаты и размер окна при выполнении скрипта.

Спасибо.