RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

全部问题

Martin Hope
Torrtozzo
Asked: 2025-01-04 14:35:00 +0000 UTC

在sqlite3中创建一个空数据库

  • 5

在 sqliteviewer 中,我的数据库如下所示。虽然它应该包含表(1)用户我没有碰任何东西,一开始数据库只是停止被读取。我解决了这个问题,现在只是创建了一个空数据库,没有用户表。我没有碰代码本身;实际上 15 分钟前一切都正常。也许我忘了'把它放在某个地方

绝对路径也不起作用,无论如何都会创建一个空数据库

import sqlite3 as sq
    
db = sq.connect("tg.db")
cur = db.cursor()
    
async def db_start():
    cur.execute("""
    CREATE TABLE IF NOT EXISTS users(
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        tg_id INTEGER,
        uid INTEGER
    )
    """)
    db.commit()

错误sqlite3.OperationalError: no such table: users

当尝试查找正在使用的数据库时,一切都很好。显示我的数据库的路径。也是到处处理,但是处理不了,因为空的。

from pathlib import Path
import sqlite3 as sq
    
db_fn = Path("tg.db")
db = sq.connect(db_fn)
cur = db.cursor()
    
if not (db_fn.exists() and db_fn.stat().st_size > 0):
    raise FileNotFoundError(f"file [{db_fn.resolve()}] is empty or doesn't exist!")
cur = db.cursor()
cur.execute("SELECT * FROM users")

代码

@router.message(Command('character'),
                 StateFilter(None)
)
async def enkanet(message: Message, state: FSMContext):
    await state.set_state(Reg.name)
    await message.answer('Напиши свой UID')
    print("card request")
    
 
@router.message(
        StateFilter(Reg.name)
)
async def character_card(message: Message,
                           state: FSMContext,
                           ) -> None:  
    await state.update_data(name=message.text)
    data = await state.get_data()    
    uid = data["name"]
    tgid = message.from_user.id
    try:
        await tg.add(id=uid, tgid=tgid)            
        await state.clear()
        await message.bot.send_chat_action(
        chat_id=message.chat.id,
        action=ChatAction.TYPING
        )
        await message.answer(
        "ЖДИ\n\n\nСекунд 20"
        )
        style_1 = cur.execute("SELECT style FROM users WHERE tg_id = ?", (tgid,)).fetchone()[0]
        card1 = await card_generate(uid=uid, style=style_1)
        if card1[0] == 1:
            await message.answer(card1[1])
        elif card1[0] == 2:
            await message.answer(card1[1])
        else:
            await message.answer(card1[0], reply_markup=card1[1])
    except OperationalError:
        await state.clear()
        return message.reply(
            'Выход\nНапиши свой UID ЦИФРАМИ\n/character'
            )

代码2

import sqlite3 as sq


db = sq.connect('tg.db')
cur = db.cursor()

async def db_start():
    cur.execute("""
    CREATE TABLE IF NOT EXISTS users(
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        tg_id INTEGER,
        uid INTEGER,
        style INTEGER
    )
    """)
    db.commit()

async def add(id, tgid):
    info = cur.execute('SELECT * FROM users WHERE tg_id=?',(tgid, )).fetchone()
    if info is None: 
        cur.execute(f"INSERT INTO users (uid, tg_id) VALUES (({id}), ({tgid}))")
        db.commit() 
    else:
        sqlite_update_query = f"""UPDATE users SET uid = {id} WHERE tg_id = {tgid}"""
        cur.execute(sqlite_update_query)
        db.commit()
        if sq.OperationalError:
            return
        return
python
  • 1 个回答
  • 30 Views
Martin Hope
ArtTM
Asked: 2025-01-04 03:07:59 +0000 UTC

在 PyQt 中创建电报风格的聊天设计

  • 5

我正在尝试使用PyQt5进行Telegram风格的聊天。 我尝试了几种选项来创建类似于聊天的内容,我认为图形最适合此目的。 我有代码,但它看起来不像 Telegram 的聊天内容。请帮我创建它。

主要.py:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, \ 
    QHBoxLayout, QLabel, QTextEdit, QPushButton, QMainWindow, \ 
    QLineEdit, QGraphicsScene, QGraphicsItem, QGraphicsView, \ 
    QGraphicsTextItem, QGraphicsRectItem
from PyQt5.QtCore import Qt
        

class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()       # Инициализирую пользовательский интерфейс
        self.current_y = 0  # Переменная для отслеживания текущей высоты
        
    def initUI(self): 
        self.setWindowTitle("Чат")
        self.setGeometry(300, 300, 1200, 700)
        
        central_widget = QWidget(self)
        self.setCentralWidget(central_widget)
        layout_input_and_send = QHBoxLayout()
        layout = QVBoxLayout(central_widget) # создаём вертикальный виджет
        layout.addLayout(layout_input_and_send)
        
        # Создаем область графики для чата 
        self.graphics_view = QGraphicsView(self)
        self.graphics_scene = QGraphicsScene(self)
        self.graphics_view.setScene(self.graphics_scene)
        layout.addWidget(self.graphics_view)  # Добавляем QGraphicsView в макет
        self.graphics_view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)  # Отключаем горизонтальную прокрутку
        
        # Поле для ввода
        self.input_user_command = QLineEdit(self)
        self.input_user_command.setPlaceholderText("Введите текст") # Устанавливаем текст подсказку
        layout_input_and_send.addWidget(self.input_user_command) # Расположение объекта
        
        # Кнопка отправки сообщения
        self.send_button = QPushButton("Отправить", self)  
        self.send_button.clicked.connect(self.send_message)  
        layout_input_and_send.addWidget(self.send_button)  
    
    def send_message(self):
        message = self.input_user_command.text()
        if message: # Проверяем, что сообщение не пустое
            print("Сообщение: " + message)
            text_item = QGraphicsTextItem(message)  # Создаем графический элемент текста
            
            # Устанавливаем размеры фона сообщения
            rect_width = 350  # Ширина фона
            rect_height = text_item.boundingRect().height() + 10  # Высота фона с отступом
            
            # Создаем прямоугольник для фона сообщения
            rect_item = QGraphicsRectItem(0, self.current_y, rect_width, rect_height)
            rect_item.setBrush(Qt.lightGray)  # Устанавливаем цвет фона (светло-серый)
        
            # Устанавливаем позицию текста так, чтобы он был выровнен по правому краю
            text_item.setPos(rect_width - text_item.boundingRect().width() - 5, self.current_y + 5)  # Отступ 5 пикселей от правого края

            # Добавляем прямоугольник и текст в сцену
            self.graphics_scene.addItem(rect_item)  # Добавляем фон в сцену
            self.graphics_scene.addItem(text_item)  # Добавляем текст в сцену

            # Обновляем текущую высоту для следующего сообщения
            self.current_y += rect_height + 10  # Увеличиваем высоту с учетом отступа
            
            self.input_user_command.clear() # Очищаю поле для ввода
            self.graphics_view.verticalScrollBar().setValue(self.graphics_view.verticalScrollBar().maximum()) # Прокручиваем вниз, чтобы показать новое сообщение
        
    def keyPressEvent(self, event):
        # Проверяем, была ли нажата клавиша Enter
        if self.input_user_command.hasFocus() and event.key() == 16777220:  # Код клавиши Enter
            self.send_message()  # Отправляем сообщение
        
        
def main():
    app = QApplication(sys.argv)
    window = Window()
    window.show()   
    sys.exit(app.exec_())     

if __name__ == "__main__":
    main()
python
  • 1 个回答
  • 42 Views
Martin Hope
SurfaceStack
Asked: 2025-01-04 02:34:58 +0000 UTC

UEFI后如何配置VGA?

  • 7

我使用 UEFI 启动(无 BIOS)。之后,控制权转移到我的操作系统的内核,我配置分页。 GOP(图形输出协议)变得不可用,任何屏幕输出也随之变得不可用。

要自己配置一切,我目前看到以下算法:

  1. 我们在 PCI 上找到任何与 VGA 兼容的显卡
  2. 我们得到视频内存开头的物理地址(对我来说,就像0x81020000在 BAR 中一样,它寻址最大的空间)
  3. 设置命令寄存器中的内存空间和 I/O 空间位 ( https://wiki.osdev.org/PCI )
  4. 我们将找到的地址“绑定”到虚拟地址(例如0xA0000)
  5. 我们将VGA寄存器设置为图形模式,例如12h(我只是将它们放在某些端口上,没有任何连接到PCI、显卡或其他任何东西)。
  6. 我们向虚拟地址 ( 0xA0000) 写入一些值,它应该显示在屏幕上

在执行完该地址的所有操作后,0xA0000会出现连贯的无意义内容 ( QEMU Monitor...),但屏幕上没有任何反应。此外,由于某种原因,无法将该值写入反射内存。

这是我的代码。最主要的是pci.c和vga.c。我在设置分页时,在检测到分页之前绑定内存,基于这样的假设:在启动之间同一个模拟器上不会发生任何变化。

我缺少什么?

c
  • 3 个回答
  • 139 Views
Martin Hope
Funsy
Asked: 2025-01-04 01:57:46 +0000 UTC

保存文件 - Telebot

  • 5

我决定在 Telebot 上为 Telegram 编写一个简单的机器人。我遇到了一个问题:我需要下载用户发送的所有文件和文本。我这样做:

from config import TOKEN
import telebot
import os
import time

bot = telebot.TeleBot(TOKEN)

@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id, 'Отправь своё (фото, видео, музыку, или текст)')

@bot.message_handler(content_types=['text', 'photo', 'video', 'audio'])
def download_data(message):
    user_directory = f'data/{message.from_user.username}'

    if not os.path.exists(user_directory):
        os.makedirs(user_directory)
    
    if message.photo:
        photo = message.photo[-1]
        file = bot.get_file(photo.file_id)
        downloaded_file = bot.download_file(file.file_path)
        filename = f'{user_directory}/photo_{int(time.time())}.jpg'

        with open(filename, 'wb') as f:
            f.write(downloaded_file)

    elif message.video:
        video = message.video
        file = bot.get_file(video.file_id)
        downloaded_file = bot.download_file(file.file_path)
        filename = f'{user_directory}/video_{int(time.time())}.mp4'

        with open(filename, 'wb') as f:
            f.write(downloaded_file)

    elif message.audio:
        audio = message.audio
        file = bot.get_file(audio.file_id)
        downloaded_file = bot.download_file(file.file_path)
        filename = f'{user_directory}/audio_{int(time.time())}.mp3'
        
        with open(filename, 'wb') as f:
            f.write(downloaded_file)

    elif message.text:
        filename = f'{user_directory}/text.txt'
        
        with open(filename, 'w') as f:
            f.write(message.text)

bot.infinity_polling()

发送大量图像、视频或音频时,会下载所发送内容的一小部分。我需要保存所有发送的文件。提前致谢!

python
  • 1 个回答
  • 35 Views
Martin Hope
Рахим Абдраев
Asked: 2025-01-04 01:47:56 +0000 UTC

使用闭包和事件的计数器

  • 6

我无法理解网上的例子是如何工作的。页面上有几个带有文本的 div(假设有 3 个)。我希望当您点击每个按钮时显示每个按钮的点击次数。我不会为每个 div 附加一个处理程序。该脚本已经有一个点击计数器。我不知道如何将 event.target 值传递给计数器。

const widjet = document.getElementsByClassName('widjet')[0]
const wrapper = document.querySelector('.widjet__wrapper');
function test(elem) {
    let num = 1;
    return function() {
        num++;
        elem.textContent = String(num);
    }
}
wrapper.addEventListener('click', (event) => {
    let target = event.target;
     test(target);
})
     <div class="widjet__wrapper">
            <div class="widjet">0</div>
            <div class="widjet">0</div>
            <div class="widjet">0</div>
     </div>

  • 电路上的计数器单独工作
  • 单独地, event.target 可以工作

我似乎无法让他们成为朋友。

它需要协同工作,以便当您单击每个 html 元素时,其文本包含其计数器。

javascript
  • 3 个回答
  • 62 Views
上一页
下一页

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5