# Опишем нужные нам поля следующим образом:
attr_types = {
"comboBox": ["currentText", "setCurrentText"],
"lineEdit": ["text", "setText"],
"plainTextEdit": ["toPlainText", "setPlainText"],
}
# Выберем нужные элементы из атрибутов формы:
for unit in [x for x in form.__dict__ if x.startswith(tuple(attr_types))]:
# И получим их значения
value = getattr(getattr(form, unit), attr_types.get(unit.split('_')[0])[0])()
for _ in lines:
if word in old_words:
continue
else:
new_words.append(word)
msg
или все таки message
photo
- это список фото разных размеров. А send_photo принимает file_id
photo=msg.photo[0].file_id
будет работать корректно table.clearSelection()
table.setCurrentIndex(QModelIndex())
[^\w\d\_\-]
(Python)/[^а-яА-ЯёЁ\w\d\_\-]/g
(Js)^
перед скобкой используется для указания начала строки при поиске.from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
import asyncio
tokens = ['token1', 'token2']
async def start_bot(dp):
event_loop.create_task(dp.start_polling())
def bot_init(event_loop, token):
bot = Bot(token)
dp = Dispatcher(bot=bot)
@dp.message_handler(commands=['start'])
async def process_start_command(message: types.Message):
await message.reply("Привет!\nНапиши мне что-нибудь!")
event_loop.run_until_complete(start_bot(dp))
if __name__ == '__main__':
event_loop = asyncio.get_event_loop()
for token in tokens: # тут можешь реализовать приемник токенов извне
bot_init(event_loop, token)
event_loop.run_forever()