RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

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

TFader's questions

Martin Hope
TFader
Asked: 2022-09-16 00:08:47 +0000 UTC

如何将用户 ID 传递给 CallbackData?

  • 0

我有一个给新用户静音的代码,为了删除它,你需要编写命令“接受用户 123”,我想用一个内联按钮替换它,这样当你点击“接受”按钮,比如点击“拒绝”用户被取消静音,然后禁止用户,但我不知道如何将新成员的ID转移到CallbackData,我该怎么做?编码:

@dp.message_handler(content_types=["new_chat_members"])
async def handler_new_member(message):
    safe_text = md.quote_html(message.chat.title)
    await bot.restrict_chat_member(message.chat.id, message.new_chat_members[0].id, can_send_messages=False)
    await message.reply(f'Уважаемый {message.new_chat_members[0].full_name}, Вы вступили в беседу "{safe_text}", \
вам выдан мут, в целях защиты беседы. Подождите, пожалуйста, пока прибудет администратор...\n⏰ | Срок наказания: Навсегда\n⭐\
Немного информации об участнике:\n🔥 Никнейм: ' + str(message.new_chat_members[0].full_name) + '\n⏰ Дата входа: '\
+ str(message.date) + '\nПриятно провести время!')

            
    admins = await bot.get_chat_administrators(message.chat.id)
    await bot.send_message(message.chat.id, f'🧑‍💻 В беседу вступил новый участник {message.new_chat_members[0].full_name}\nКоманда для принятия:\n"<code>Принять пользователя {message.new_chat_members[0].id}</code>"\n' + "".join([f'<a href="tg://user?id={admin.user.id}">ᅠ</a>' for admin in admins]), parse_mode='html')
telegram-bot
  • 0 个回答
  • 0 Views
Martin Hope
TFader
Asked: 2022-08-14 14:11:55 +0000 UTC

为什么 sqlite3 不向数据库写入数据?

  • 0

我在电报机器人中使用 sqlite3,它从命令接收数据:

if "+ник" in message.text:
        await message.reply('Ваш ник добавлен в базу данных!')
        comments = " ".join(message.text.split()[1:])
        us_id = message.from_user.id
        us_name = message.from_user.first_name
        us_sname = message.from_user.last_name
        username = message.from_user.username
        try:
            cursor.execute(f'UPDATE test SET user_nick = ? WHERE user_id = ?', (comments, message.from_user.id))
        except:
            db_table_val(user_id=us_id, user_name=us_name, user_surname=us_sname, 
username=username, user_nick=comments)

但是当我查看表格时,我没有看到 user_nick 字段中的数据,这是表格: 在此处输入图像描述

python база-данных
  • 1 个回答
  • 24 Views
Martin Hope
TFader
Asked: 2022-08-14 03:03:58 +0000 UTC

如何更改 SqlLite3 中的数据?

  • 0

我正在尝试将数据添加到表中,但它给了我一个错误sqlite3.IntegrityError: UNIQUE constraint failed: test.user_id,我该怎么办?

编码:

from aiogram import Bot, types
from aiogram import md
import sqlite3
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor

bot = Bot(token='token')
dp = Dispatcher(bot)
conn = sqlite3.connect('DataBase.db', check_same_thread=False)
cursor = conn.cursor()


def db_table_val(user_id: int, user_name: str, user_surname: str, username: str, user_nick: str):
   cursor.execute('INSERT INTO test (user_id, user_name, user_surname, username, user_nick) VALUES (?, ?, ?, ?, ?)', (user_id, user_name, user_surname, username, user_nick))
   conn.commit()

@dp.message_handler(content_types=['text'])
async def get_text_messages(message: types.Message):
   if "+ник" in message.text:
       await message.reply('Привет! Ваш ник добавлено в базу данных!')
       args= message.text.split()
       us_id = message.from_user.id
       us_name = message.from_user.first_name
       us_sname = message.from_user.last_name
       username = message.from_user.username

       db_table_val(user_id=us_id, user_name=us_name, user_surname=us_sname, username=username, user_nick=args[2])


   elif message.text == "мой ник":
       cur = conn.cursor()
       cur.execute('SELECT user_nick FROM test WHERE user_id = ?', (message.from_user.id,))
       one_result = cur.fetchone()
       await message.reply(*one_result)
if __name__ == "__main__":
   executor.start_polling(dp)

桌子: 在此处输入图像描述

python telegram-bot
  • 1 个回答
  • 20 Views
Martin Hope
TFader
Asked: 2022-08-09 23:56:19 +0000 UTC

如何在aiogram中静音用户?

  • 0

如何在aiogram中暂时静音用户?我用谷歌搜索了这个问题,偶然发现了该站点并获得了代码,对其进行了测试,但是该机器人不响应消息,同时它也没有给出错误,为什么?我从网站上得到的代码:

@dp.message_handler(commands=['мут', 'mute'], commands_prefix='./$!', is_chat_admin=True)
async def mute(message):
      name1 = message.from_user.get_mention(as_html=True)
      if not message.reply_to_message:
         await message.reply("Эта команда должна быть ответом на сообщение!")
         return
      try:
         muteint = int(message.text.split()[1])
         mutetype = message.text.split()[2]
         comments = " ".join(message.text.split()[3:])
      except IndexError:
         await message.reply('Не хватает аргументов!\nПример:\n`/мут 1 ч причина`')
         return
      if mutetype == "ч" or mutetype == "часов" or mutetype == "час":
         dt = datetime.now() + timedelta(hours=muteint)
         timestamp = dt.timestamp()
         await bot.restrict_chat_member(message.chat.id, message.reply_to_message.from_user.id, types.ChatPermissions(False), until_date = timestamp)
         await message.reply(f' | <b>Решение было принято:</b> {name1}\n | <b>Нарушитель:</b> <a href="tg://user?id={message.reply_to_message.from_user.id}">{message.reply_to_message.from_user.first_name}</a>\n⏰ | <b>Срок наказания:</b> {muteint} {mutetype}\n | <b>Причина:</b> {comment}',  parse_mode='html')
      elif mutetype == "м" or mutetype == "минут" or mutetype == "минуты":
         dt = datetime.now() + timedelta(minutes=muteint)
         timestamp = dt.timestamp()
         await bot.restrict_chat_member(message.chat.id, message.reply_to_message.from_user.id, types.ChatPermissions(False), until_date = timestamp)
         await message.reply(f' | <b>Решение было принято:</b> {name1}\n | <b>Нарушитель:</b> <a href="tg://user?id={message.reply_to_message.from_user.id}">{message.reply_to_message.from_user.first_name}</a>\n⏰ | <b>Срок наказания:</b> {muteint} {mutetype}\n | <b>Причина:</b> {comment}',  parse_mode='html')
      elif mutetype == "д" or mutetype == "дней" or mutetype == "день":
         dt = datetime.now() + timedelta(days=muteint)
         timestamp = dt.timestamp()
         await bot.restrict_chat_member(message.chat.id, message.reply_to_message.from_user.id, types.ChatPermissions(False), until_date = timestamp)
         await message.reply(f' | <b>Решение было принято:</b> {name1}\n | <b>Нарушитель:</b> <a href="tg://user?id={message.reply_to_message.from_user.id}">{message.reply_to_message.from_user.first_name}</a>\n⏰ | <b>Срок наказания:</b> {muteint} {mutetype}\n | <b>Причина:</b> {comment}',  parse_mode='html') 
python telegram-bot
  • 1 个回答
  • 74 Views
Martin Hope
TFader
Asked: 2022-08-08 18:45:27 +0000 UTC

用户在aiogram中一进入对话,如何激起他的兴趣?[关闭]

  • 0
关闭 这个问题是题外话。目前不接受回复。

寻求调试帮助的问题(“为什么这段代码不起作用? ”)应该包括期望的行为、具体的问题或错误,以及在问题中重现它的最少代码。没有明确描述问题的问题对其他访问者毫无用处。请参阅如何创建一个最小的、独立的和可重现的示例。

1 个月前关闭。

改进问题

我有一个小代码,当参与者加入时,机器人会给他一个静音,但是由于某种原因,机器人给了我一个错误,如何解决这个问题并让它给新参与者静音?编码:

from aiogram import Bot, types
from aiogram.utils import executor
bot = Bot(token=token)
dp = Dispatcher(bot)
@dp.message_handler(content_types=["new_chat_members"])
async def handler_new_member(message):
     bot.restrict_chat_member(message.chat.id, message.from_user.id, can_send_messages=False)
     await message.reply(f'</b>Уважаемый <a href="tg://user?id={message.reply_to_message.from_user.id}">{message.reply_to_message.from_user.first_name}</a>Вы вступили в беседу "{message.chat.title}" и вам выдан мут, дождитесь администрации...\n⏰ | <b>Срок наказания: Навсегда',  parse_mode='html')
if __name__ == '__main__':
    executor.start_polling(dp)
python telegram-bot
  • 1 个回答
  • 42 Views
Martin Hope
TFader
Asked: 2022-08-08 02:15:09 +0000 UTC

如何让机器人响应在航空图对话中按下内联按钮?

  • 0

有一个小代码,我需要它,以便当按下内联按钮时,机器人不会响应 PM 中的参与者,而是响应对话,如何做到这一点?编码:

from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram.types import ReplyKeyboardRemove, ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton

bot = Bot(token=token)
dp = Dispatcher(bot)
@dp.message_handler(content_types='text')
async def new_message(message: types.Message):
    if message.text == 'Бот дуэль':
        player_1 = f'<a href="t.me/{message.from_user.username}">{message.from_user.first_name}</a>'
        player_2 = f'<a href="t.me/{message.reply_to_message.from_user.username}">{message.reply_to_message.from_user.first_name}</a> '
        if message.from_user.id == message.reply_to_message.from_user.id:
            await message.reply(f'{player_1}, к сожалению, невозможно предложить играть самому себе...', parse_mode='HTML', disable_web_page_preview=True)
        else:
            inline_kb_full = InlineKeyboardMarkup(row_width=2)
            inline_btn_1 = InlineKeyboardButton('Дуэль да', callback_data='btn1')
            inline_btn_2 = InlineKeyboardButton('Дуэль нет', callback_data='btn2')
            inline_kb_full.add(inline_btn_1, inline_btn_2)
            await message.reply(f'{player_2}, минуточку внимания...\n{player_1} предложил вам дуэль\nВыберите ниже "Дуэль да" или "Дуэль нет", что бы принять вызов или отказаться', parse_mode='HTML', disable_web_page_preview=True, reply_markup=inline_kb_full)@dp.callback_query_handler(lambda c: c.data == 'btn1')
@dp.callback_query_handler(lambda c: c.data == 'btn1')
async def new_message(message: types.Message):
    await bot.send_message(message.from_user.id, f'Игрок принял вызов')

if __name__ == '__main__':
    executor.start_polling(dp)
python telegram-bot
  • 1 个回答
  • 39 Views
Martin Hope
TFader
Asked: 2022-09-07 05:15:13 +0000 UTC

如何从aiogram中的重播中获取用户名?

  • 0

我有一个代码,用户可以通过重播用户(回复他的消息)来发出 rp 命令,如何获取有关该成员的信息(例如,fitst_name)?例如,我还想实现通过 ID 获取姓氏,以便用户写“RP 与@username 握手”,机器人从该用户名中接收姓氏(如:Sergey 与 Vlad 握手)代码:

from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from random import randint as ri

@dp.message_handler(content_types='text')
async def new_message(message: types.Message):
    if 'РП' in message.text:
         args = message.text.split()
         await message.reply(message.from_user.first_name, args[1]) #тут что-то делать
if __name__ == '__main__':
    executor.start_polling(dp) 
python
  • 2 个回答
  • 167 Views
Martin Hope
TFader
Asked: 2022-08-05 03:38:16 +0000 UTC

如何在 airogram 中获取有关短用户 ID、消息发送时间和接收消息的会话的数据?

  • 0

我有一个带有迷你机器人的代码,它有命令“Danet”(回答是或否)和“Infa”(给出随机百分比),它还向我发送有关私下写给他的每条消息的信息消息或对话(它指示用户的姓名、他的 ID、姓氏以及相应的消息),我需要接收用户 ID(不是数字,而是用户指示的那个,如果有的话,例如 @user_name ),发送消息的时间和发送消息的对话(或者如果用户发送了 PM,那么将显示什么),如果可能的话,当然这是我的代码:

from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
import emoji
from random import randint as ri
from random import randint as ki
bot = Bot(token=token)
dp = Dispatcher(bot)


@dp.message_handler(commands=['help'])
async def process_help_command(message: types.Message):
    await message.reply("В боте есть следующие команды:\n'Бот инфа [Ваш текст]' - выдаст вам процент от 0 до 100 (p.s. информация не является достоверной, это лишь случайные числа для развлечания)\n'Бот данет [Ваш текст]' - выдает вам ответ на ваш вопрос в стиле 'Да', или 'Нет'")


@dp.message_handler(content_types='text')
async def new_message(message: types.Message):
#------
    try:
        await bot.send_message(id, 'Сообщение пользователя: "'+ message.text + '"\nАйди пользователя: @' + str(message.from_user.id) + "\nНик пользователя: " + message.from_user.first_name + "\nФамилия пользователя: " + message.from_user.last_name)
    except:
        await bot.send_message(id, 'Сообщение пользователя: "'+ message.text + '"\nАйди пользователя: @' + str(message.from_user.id) + "\nНик пользователя: " + message.from_user.first_name + "\nФамилия пользователя: -!")
    
#------
    if 'Бот данет' in message.text:
        r = ki(1, 2)
        if r == 1:
            danet = "Нет"
        else:
            danet = "Да"
        await message.reply("Ответ: " + danet)
        state="*"

    elif 'Бот инфа' in message.text:
            kr = ri(0, 100)
            await message.reply("Шанс равен: " + str(kr) + "%")
            state="*"

if __name__ == '__main__':
    executor.start_polling(dp)
python telegram-bot
  • 1 个回答
  • 39 Views
Martin Hope
TFader
Asked: 2022-07-22 01:46:23 +0000 UTC

如何在 PyQt5 中的某些操作上切换到另一个类?

  • 0

我有一个代码,其中在屏幕中间创建了一个按钮,我需要在按下它时打开另一个类并关闭旧的类以进行进一步的操作,我该怎么做?我的代码:

#                                                                                                                                                                                                                                                    
import sys
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.Qt import *
MyApp = QtWidgets.QApplication(sys.argv)
V = MyApp.desktop().screenGeometry()
h = V.height()
w = V.width()
try:
    from PyQt5.QtWinExtras import QtWin
    myappid = 'mycompany.myproduct.subproduct.version'
    QtWin.setCurrentProcessExplicitAppUserModelID(myappid)
except ImportError:
    pass
class PushButton(QPushButton):
    def __init__(self, parent=None):
        super(PushButton, self).__init__(parent)
        
        self.icon_1 = QtGui.QIcon()
        self.icon_1.addPixmap(
            QtGui.QPixmap("Button_image/start.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.setIconSize(QtCore.QSize(500, 300))
        self.setIcon(self.icon_1)
        
        self.icon_2 = QtGui.QIcon()
        self.icon_2.addPixmap(
            QtGui.QPixmap("Button_image/start_true.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.setIconSize(QtCore.QSize(500, 300))

        self.setFixedSize(350, 220)
        
    def enterEvent(self, event):  
        self.setIcon(self.icon_2)

    def leaveEvent(self, event):
        self.setIcon(self.icon_1)
class StartWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.сentralWidget = QtWidgets.QWidget(self)
        self.сentralWidget.setObjectName("сentralWidget")
        self.setCentralWidget(self.сentralWidget)
        
        centralWidget = QWidget()
        self.setCentralWidget(centralWidget)
        #Кнопка для создания текста
        def Button_text(btn_name, text, px, resize, resize_2, move, move_2, color):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet("color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('MS Serif', 14))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            
        #Кнопка для создания картинки
        def Button_image(btn_name, text, px, resize, resize_2, move, move_2, color):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet("background-image: url(" + image + "); border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('MS Serif', 14))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
        
        #Кнопка для действий
        def Button_click(btn_name, text, px, resize, resize_2, move, move_2, color, mains):
            btn_name.setMouseTracking(True)
            btn_name.setStyleSheet("background-color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('MS Serif', 14))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            btn_name.clicked.connect(mains)
       
        self.start_btn = QPushButton(self)
        Button_click(self.start_btn, "", 50, 250, 100, int(w/2-125), int(h/2-50), "Blue", self.start)
    def start(self):
        None
#тут другой класс
class MainWindow(QMainWindow):
    #прикольчики
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    app.setWindowIcon(QtGui.QIcon('System_image/icon.png'))
    ex = StartWindow()
    ex.setWindowTitle('Story Telling')
    ex.setWindowIcon(QIcon('System_image/icon.png'))
    ex.showFullScreen()
    ex.show()
    sys.exit(app.exec_())
python pyqt5
  • 1 个回答
  • 31 Views
Martin Hope
TFader
Asked: 2022-08-13 15:57:22 +0000 UTC

如何从 QTimer 中提取刻度?

  • 0

我在代码中有QTimer,我需要把它拉出来tick,以便在以后的时候它可以用作tick表达式int。

怎么做?

python pyqt5
  • 1 个回答
  • 26 Views
Martin Hope
TFader
Asked: 2022-08-18 21:15:37 +0000 UTC

错误地将按钮添加到 vk_api

  • 0

我正在用 Python 编写一个机器人,在 Longpoll 上,需要按钮。我创建了它们,其中有返回菜单的按钮。所以,做一个圆圈(例如,返回菜单>并返回到它所在的地方)出现更多按钮(见截图),我该如何删除它们?在此处输入图像描述 在代码中,我突出显示了有问题的地方

我的代码:

import vk_api
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
from vk_api.utils import get_random_id
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.longpoll import VkLongPoll, VkEventType

keyboard = VkKeyboard(one_time=True)

token="Токен"
bh = vk_api.VkApi(token = token)
give = bh.get_api()
longpoll = VkLongPoll(bh)
vk_session = vk_api.VkApi(token=token)
price = 0
skins=0
vk = vk_session.get_api()

def blasthack(id, text):
    bh.method('messages.send', {'user_id' : id, 'message' : text, 'random_id': 0})
print("Бот включен!")
for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW:
       if event.to_me:
          message = event.text.lower()
          id = event.user_id
          ids = event.user_id
          def GP(playerid, get): 
              user_get=give.users.get(user_ids = (playerid)) 
              user_get=user_get[0] 
              return user_get[get]
          def op():
            GP(str(ids), 'first_name')
          blasthack("568118601", 'Пользователь [id' + str(ids) + '|' + GP(str(ids), 'first_name') + ' ' + GP(str(ids), 'last_name') + '] написал сообщение:\n' + '"' + message + '"')

          if message == 'заказать мод':
            blasthack(id, '''
       Все доступные функции  
    ⭐[Внешние изменения]⭐
1) Скины - 2₽ за штуку
2) Замена анимации(на существующую в игре) - 1₽ за штуку
3) Замена фона(на ваш/из любой версии) - 25₽ за штуку 
4) Замена загрузочного экрана(на ваш/из любой версии) - 25₽
5) Замена шрифта - 15₽
6) Изменить текст - 0.5₽ за строчку
7) Замена саундтрека(на ваш/из любой версии) - 5₽ за штуку
8) Заменить эффекты скина - 1,5₽ за штуку
9) Добавить свой скин в игру - 15₽ за штуку
10) Модель по вашему заказу - от 100₽ за штуку(цена зависит от сложности работы)''')

          elif message == '1':
       #vvvvvv проблема тут vvvvvvvv
              keyboard.add_button('+1 к cкинaм', color=VkKeyboardColor.POSITIVE)
              keyboard.add_button('+5 к cкинaм', color=VkKeyboardColor.POSITIVE)
              keyboard.add_button('+10 к cкинaм', color=VkKeyboardColor.POSITIVE)

              keyboard.add_line()
              keyboard.add_button('-1 к cкинaм', color=VkKeyboardColor.NEGATIVE)
              keyboard.add_button('-5 к cкинaм', color=VkKeyboardColor.NEGATIVE)
              keyboard.add_button('-10 к cкинaм', color=VkKeyboardColor.NEGATIVE)

              keyboard.add_line()
              keyboard.add_button('Вернуться в меню', color=VkKeyboardColor.PRIMARY)
              vk.messages.send(
              peer_id=str(ids),
              message='Введите количество скинов (по кнопкам).\n+1 cкинaм - добавить 1 скин к заказу\n+5 к cкинaм - добавить 5 скинов к заказу\n+10 к cкинaм - добавить 10 скинов к заказу.\nАналогично с минусами',
              keyboard=keyboard.get_keyboard(),
              random_id=0
              )
              
          elif message == 'myname':
              blasthack(id, f'Ваше имя: [id' + str(ids) + '|' + GP(str(ids), 'first_name') + ' ' + GP(str(ids), 'last_name') + ']')
              main(id)

          elif message == "+1 к cкинaм":
              price+=2
              skins+=1
         #vvvvvvv проблема тут vvvvvv
              keyboard.add_button('Вeрнyтьcя нaзaд', color=VkKeyboardColor.POSITIVE)
              keyboard.add_line()
              keyboard.add_button('Зaвepшить зaкaз', color=VkKeyboardColor.NEGATIVE)
              vk.messages.send(
              peer_id=str(ids),
              message="Добавлено 1 скина(ов). Всего: " + str(skins) + " скинов, на сумму: " + str(price) + "₽!",
              keyboard=keyboard.get_keyboard(),
              random_id=0
              )
          elif message == 'вeрнyтьcя нaзaд':
              blasthack(str(ids), '''
       Все доступные функции  
    ⭐[Внешние изменения]⭐
1) Скины - 2₽ за штуку
2) Замена анимации(на существующую в игре) - 1₽ за штуку
3) Замена фона(на ваш/из любой версии) - 25₽ за штуку 
4) Замена загрузочного экрана(на ваш/из любой версии) - 25₽
5) Замена шрифта - 15₽
6) Изменить текст - 0.5₽ за строчку
7) Замена саундтрека(на ваш/из любой версии) - 5₽ за штуку
8) Заменить эффекты скина - 1,5₽ за штуку
9) Добавить свой скин в игру - 15₽ за штуку
10) Модель по вашему заказу - от 100₽ за штуку(цена зависит от сложности работы)''')
          elif message == 'зaвepшить зaкaз':
              blackhack(str(ids), 'Завершить заказ? Сумма вашего заказа: ' + str(price) + "₽")
        #vvvvvv проблема тут vvvvvvvv
              keyboard.add_button('Дa, зaвeршить', color=VkKeyboardColor.POSITIVE)
              keyboard.add_button('Нет, oтмeнить', color=VkKeyboardColor.NEGATIVE)
vkontakte-api
  • 1 个回答
  • 10 Views
Martin Hope
TFader
Asked: 2022-06-12 05:43:19 +0000 UTC

如何在 PyQt5 中保存更改的文本

  • 1

我有一个代码,当单击“下一步”按钮时,文本会发生变化,我怎样才能让它保存以及下次出现更改的文本?我的代码:

import sys
from PyQt5 import QtWidgets, QtGui, QtCore, QtMultimedia
from PyQt5.Qt import *

MyApp = QtWidgets.QApplication(sys.argv)
V = MyApp.desktop().screenGeometry()
h = V.height()
w = V.width()
try:
    from PyQt5.QtWinExtras import QtWin
    myappid = 'mycompany.myproduct.subproduct.version'
    QtWin.setCurrentProcessExplicitAppUserModelID(myappid)
except ImportError:
    pass

class PushButton(QPushButton):
    def __init__(self, parent=None):
        super(PushButton, self).__init__(parent)
        self.icon_1 = QtGui.QIcon()
        self.icon_1.addPixmap(
            QtGui.QPixmap("start.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.setIconSize(QtCore.QSize(500, 300))
        self.setIcon(self.icon_1)
        
        self.icon_2 = QtGui.QIcon()
        self.icon_2.addPixmap(
            QtGui.QPixmap("start_true.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.setIconSize(QtCore.QSize(500, 300))

        self.setFixedSize(350, 220)
        
    def enterEvent(self, event):  
        self.setIcon(self.icon_2)

    def leaveEvent(self, event):
        self.setIcon(self.icon_1)

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.num = 5
        self.text = None
        self._rect = QRect(0, 0, 100, 100)
        filename = 'music.mp3'
        fullpath = QtCore.QDir.current().absoluteFilePath(filename)
        url = QtCore.QUrl.fromLocalFile(fullpath)
        content = QtMultimedia.QMediaContent(url)
        self.player = QtMultimedia.QMediaPlayer()
        self.player.setMedia(content)
        self.player.setVolume(50)
        self.player.play()

        self.slider = QSlider(Qt.Horizontal, self)
        self.slider.setRange(0, 100)
        self.slider.setValue(50)
        self.slider.setGeometry(800, 720, 300, 70)
        self.slider.hide()
        self.slider.valueChanged.connect(self.player.setVolume)

        def Button_Name(btn_name, text, px, resize, resize_2, move, move_2, color, mains):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet(
                "color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('MS Serif', 14))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            btn_name.clicked.connect(mains)

        def Button_2(btn_name, text, px, resize, resize_2, move, move_2, color, size):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet(
                "color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('Gabriola', size))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            # btn_name.clicked.connect(mains)

        def Button_3(btn_name, text, px, resize, resize_2, move, move_2, color, mains):
            btn_name.setMouseTracking(True);
            if text == "Настройки громкости":
                btn_name.setCheckable(True)
                btn_name.setText(f'{text}: ({self.slider.value()})')
            else:
                btn_name.setText(text)

            btn_name.setStyleSheet(
                "color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('MS Serif', 14))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            btn_name.clicked.connect(mains)

        def Image(lbl_name, move_1, move_2, resize_1, resize_2):
            lbl_name.setPixmap(self.pix)
            lbl_name.move(move_1, move_2)
            lbl_name.resize(resize_1, resize_2)

        self.lbl2 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("image.jpg").scaled(w, h)
        Image(self.lbl2, 0, 0, w, h)
        self.lbl1 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("System_image/textbox.png").scaled(w, int(h/4))
        Image(self.lbl1, 0, h-int(h/3), w, int(h/3+100))
        self.lbl11 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/next.png").scaled(220, 70)
        Image(self.lbl11, w-270, h-130, 250, 85)
        self.btn_next_text = QPushButton(self)
        Button_3(self.btn_next_text, "", 5, 250, 85, w-270, h-130, "White", self.next)
        self.btn_next_text.close()

        self.lbl11.close()
        self.btn1 = QPushButton(self)
        Button_2(self.btn1, "Да", 10, 1000, 200, int(w/2-500), int(h/1.40), "White", 15)
        self.inv = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/inventory_btn.png").scaled(156, 96)
        Image(self.inv, -30, int(h/2+50), 156, 96)
        self.btn31 = QPushButton(self)
        Button_3(self.btn31, "", 0, 156, 96, -30, int(h/2+50), "White", self.inventory)
        self.inv_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/inventory.png").scaled(w-150, h-84)
        Image(self.inv_open, 70, 40, w-150, h-84)
        self.inv_open.close()
        self.btn4 = QPushButton(self)
        Button_3(self.btn4, "", 5, 120, 120, int(w/1.18), int(h/10), "White", self.inventory_close)
        self.btn4.close()
        self.lbl20 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("System_image/Selection_menu.png").scaled(w, h)
        Image(self.lbl20, 0, 0, w, h)
        self.lbl20.close()
        self.mg_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/Magazine.png").scaled(156, 96)
        Image(self.mg_open, -30, int(h/2-60), 156, 96)
        self.btn5 = QPushButton(self)
        Button_3(self.btn5, "", 0, 156, 96, -30, int(h/2-60), "White", self.event_log)

        self.btn6 = QPushButton(self)
        Button_3(self.btn6, "", 0, int(w/3), h, 0, 0, "White", self.notes)
        self.btn6.close()
        self.btn7 = QPushButton(self)
        Button_3(self.btn7, "", 0, int(w/3), h, int(w/3), 0, "White", self.easter)
        self.btn7.close()
        self.btn8 = QPushButton(self)
        Button_3(self.btn8, "", 0, int(w/3), h, int(w/3*2), 0, "White", self.tasks)
        self.btn8.close()
        self.notes_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Notes.png").scaled(w, h)
        Image(self.notes_open, 0, 0, w, h)
        self.notes_open.close()
        self.btn9 = QPushButton(self)
        Button_3(self.btn9, "", 5, 100, 100, int(w/1.13), int(h/20), "White", self.inventory_close)
        self.btn9.close()
        self.easter_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Easter.png").scaled(w, h)
        Image(self.easter_open, 0, 0, w, h)
        self.easter_open.close()
        self.btn10 = QPushButton(self)
        Button_3(self.btn10, "", 5, 100, 100, int(w/1.13), int(h/20), "White", self.inventory_close)
        self.btn10.close()

        self.tasks_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Tasks.png")
        Image(self.tasks_open, 0, 0, w, h)
        self.tasks_open.close()
        self.btn11 = QPushButton(self)
        Button_3(self.btn11, "", 5, 100, 100, int(w/1.13), int(h/20), "White", self.inventory_close)
        self.btn11.close()

        self.lbl2.close()
        self.btn31.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.mg_open.close()
        self.btn5.close()
        self.btn6.close()

        self.btn_start = PushButton(self)
        Button_3(self.btn_start, "", 20, 500, 200, int(w/2-175), int(h/5), "Black", self.start)

        self.btn_next = QPushButton(self)
        Button_3(self.btn_next, "Продолжить", 20, 300, 100, int(w/2-150), int(h/2), "Black", self.next_start)

        self.btn_select = QPushButton(self)
        Button_3(self.btn_select, "Настройки громкости", 20, 500, 100, int(w/2-250), int(h/1.5), "Black", self.volume_custom)

    def inventory(self):
        self.btn_next_text.close()
        self.lbl11.close()
        self.btn31.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.inv_open.show()
        self.btn4.show()
        self.mg_open.close()
        self.btn5.close()
        self.btn6.close()

    def inventory_close(self):
        self.btn_next_text.show()
        self.lbl11.show()
        self.btn1.show()
        self.lbl1.show()
        self.inv.show()
        self.inv_open.close()
        self.btn4.close()
        self.notes_open.close()
        self.btn9.close()
        self.mg_open.show()
        self.btn5.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()
        self.easter_open.close()
        self.btn10.close()
        self.btn11.close()
        self.tasks_open.close()
        self.btn31.show()

    def animations(self):
        animation = QPropertyAnimation(self)
        animation.setTargetObject(self.btn_name)
        animation.setPropertyName(b'pos')
        animation.setStartValue(QPoint(250, -200))
        animation.setEndValue(QPoint(250, 0))
        animation.setDuration(500)
        animation.start()

    def event_log(self):
        self.btn_next_text.close()
        self.lbl11.close()
        self.btn31.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.btn5.close()
        self.mg_open.close()
        self.lbl20.show()
        self.btn6.show()
        self.btn7.show()
        self.btn8.show()

    def notes(self):
        self.lbl11.close()
        self.lbl20.close()
        self.notes_open.show()
        self.btn9.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()

    def easter(self):
        self.lbl11.close()
        self.lbl20.close()
        self.easter_open.show()
        self.btn10.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()

    def tasks(self):
        self.lbl11.close()
        self.lbl20.close()
        self.tasks_open.show()
        self.btn11.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()

    def start(self):
        self.btn_next_text.show()
        self.lbl11.show()
        self.btn_next.close()
        self.btn1.show()
        self.lbl1.show()
        self.inv.show()
        self.inv_open.close()
        self.btn4.close()
        self.notes_open.close()
        self.btn9.close()
        self.mg_open.show()
        self.btn5.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()
        self.easter_open.close()
        self.btn10.close()
        self.btn11.close()
        self.tasks_open.close()
        self.btn31.show()
        self.lbl2.show()
        self.slider.close()
        self.btn_select.close()
        self.btn_start.close()

    def volume_custom(self):
        sender = self.sender()
        print(f'def volume_custom(): {sender.text()} - {sender.isChecked()}')

        if sender.isChecked():
            self.slider.show()
        else:
            self.slider.close()

        sender.setText(f'Настройки громкости: ({self.slider.value()})')

    def next_start(self):
        #тут действие нужно
        print()
    def next(self):
        self.btn1.setText("Нет")

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    app.setWindowIcon(QtGui.QIcon('System_image/icon.png'))
    ex = MainWindow()
    ex.setWindowTitle('Story Telling')
    ex.setWindowIcon(QIcon('System_image/icon.png'))
    ex.showFullScreen()
    ex.show()
    sys.exit(app.exec_())
python
  • 1 个回答
  • 10 Views
Martin Hope
TFader
Asked: 2022-06-06 17:43:15 +0000 UTC

如何在 PyQt5 中创建 continue 函数并再次启动该过程?

  • 1

我有一个代码,如果执行了任何操作,它们会被保存,但我需要制作“从头开始”功能,当按下这样的按钮时,进度会被重置,并且有一个“继续”按钮。

更新:

我有“从头开始”和“继续”按钮,我需要当点击继续按钮时,游戏将从用户离开的地方继续,当点击“从头开始”按钮时,它会从头开始,喜欢这个工具吗?

我的代码:

import sys
from PyQt5 import QtWidgets, QtGui, QtCore, QtMultimedia
from PyQt5.Qt import *

russia_language = True

try:
    from PyQt5.QtWinExtras import QtWin
    myappid = 'mycompany.myproduct.subproduct.version'
    QtWin.setCurrentProcessExplicitAppUserModelID(myappid)
except ImportError:
    pass


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        filename = 'music.mp3'
        fullpath = QtCore.QDir.current().absoluteFilePath(filename)
        url = QtCore.QUrl.fromLocalFile(fullpath)
        content = QtMultimedia.QMediaContent(url)
        self.player = QtMultimedia.QMediaPlayer()
        self.player.setMedia(content)
        self.player.setVolume(50)
        self.player.play()

        self.slider = QSlider(Qt.Horizontal, self)
        self.slider.setRange(0, 100)
        self.slider.setValue(50)
        self.slider.setGeometry(800, 720, 300, 70)
        self.slider.hide()
        self.slider.valueChanged.connect(self.player.setVolume)

        def Button(btn_name, text, color1, px, resize, resize_2, move, move_2, color, mains):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet(
                "background-color: " + color1 + "; color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('MS Serif', 14))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            btn_name.clicked.connect(mains)

        def Button_2(btn_name, text, px, resize, resize_2, move, move_2, color, size):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet(
                "color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('Gabriola', size))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            # btn_name.clicked.connect(mains)

        def Button_3(btn_name, text, px, resize, resize_2, move, move_2, color, mains):
            btn_name.setMouseTracking(True);
            if text == "Настройки громкости":
                btn_name.setCheckable(True)
                btn_name.setText(f'{text}: ({self.slider.value()})')
            else:
                btn_name.setText(text)
            # +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

            btn_name.setStyleSheet(
                "color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('MS Serif', 14))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            btn_name.clicked.connect(mains)

        def Image(lbl_name, move_1, move_2, resize_1, resize_2):
            lbl_name.setPixmap(self.pix)
            lbl_name.move(move_1, move_2)
            lbl_name.resize(resize_1, resize_2)

        self.lbl2 = QtWidgets.QLabel(self)

        self.pix = QtGui.QPixmap("image.jpg")
        Image(self.lbl2, 0, 0, 1920, 1080)

        self.lbl1 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("System_image/textbox.png")
        Image(self.lbl1, 0, 800, 1920, 300)
        self.btn1 = QPushButton(self)
        Button_2(self.btn1, "Вы появились в неизвестном вам месте,\nгде было невероятно красиво", 10, 1000, 200, 430, 830, "White", 30)
        self.inv = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/inventory_btn.png")
        Image(self.inv, -30, 600, 156, 96)
        self.btn31 = QPushButton(self)
        Button_3(self.btn31, "", 0, 100, 100, 0, 600, "White", self.inventory)
        self.inv_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/inventory.png")
        Image(self.inv_open, 70, 40, 1770, 996)
        self.inv_open.close()
        self.btn4 = QPushButton(self)
        Button_3(self.btn4, "", 5, 100, 100, 1650, 110, "White", self.inventory_close)
        self.btn4.close()
        self.lbl20 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("System_image/Selection_menu.png")
        Image(self.lbl20, 0, 0, 1920, 1080)
        self.lbl20.close()
        self.mg_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/Magazine.png")
        Image(self.mg_open, -30, 480, 156, 96)
        self.btn5 = QPushButton(self)
        Button_3(self.btn5, "", 0, 100, 100, 0, 480, "White", self.event_log)
        self.btn6 = QPushButton(self)
        Button_3(self.btn6, "", 0, 460, 800, 160, 170, "White", self.notes)
        self.btn6.close()
        self.btn7 = QPushButton(self)
        Button_3(self.btn7, "", 0, 460, 800, 700, 170, "White", self.easter)
        self.btn7.close()
        self.btn8 = QPushButton(self)
        Button_3(self.btn8, "", 0, 460, 800, 1260, 170, "White", self.tasks)
        self.btn8.close()
        self.notes_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Notes.png")
        Image(self.notes_open, 0, 0, 1920, 1080)
        self.notes_open.close()
        self.btn9 = QPushButton(self)
        Button_3(self.btn9, "", 5, 80, 80, 1730, 50, "White", self.inventory_close)
        self.btn9.close()
        self.easter_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Easter.png")
        Image(self.easter_open, 0, 0, 1920, 1080)
        self.easter_open.close()
        self.btn10 = QPushButton(self)
        Button_3(self.btn10, "", 5, 80, 80, 1730, 50, "White", self.inventory_close)
        self.btn10.close()

        self.tasks_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Tasks.png")
        Image(self.tasks_open, 0, 0, 1920, 1080)
        self.tasks_open.close()
        self.btn11 = QPushButton(self)
        Button_3(self.btn11, "", 5, 80, 80, 1730, 50, "White", self.inventory_close)
        self.btn11.close()

        self.lbl2.close()
        self.btn31.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.mg_open.close()
        self.btn5.close()
        self.btn6.close()

        self.btn_start = QPushButton(self)
        Button_3(self.btn_start, "Начать заново", 20, 300, 100, 800, 400, "Black", self.start)

        self.btn_next = QPushButton(self)
        Button_3(self.btn_next, "Продолжить", 20, 300, 100, 800, 500, "Black", self.start)
        # !!!
        self.btn_select = QPushButton(self)
        Button_3(self.btn_select, "Настройки громкости", 20, 300, 100, 800, 600, "Black", self.volume_custom)

    def inventory(self):
        self.btn31.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.inv_open.show()
        self.btn4.show()
        self.mg_open.close()
        self.btn5.close()
        self.btn6.close()

    def inventory_close(self):
        self.btn1.show()
        self.lbl1.show()
        self.inv.show()
        self.inv_open.close()
        self.btn4.close()
        self.notes_open.close()
        self.btn9.close()
        self.mg_open.show()
        self.btn5.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()
        self.easter_open.close()
        self.btn10.close()
        self.btn11.close()
        self.tasks_open.close()
        self.btn31.show()

    def animations(self):
        animation = QPropertyAnimation(self)
        animation.setTargetObject(self.btn_name)
        animation.setPropertyName(b'pos')
        animation.setStartValue(QPoint(250, -200))
        animation.setEndValue(QPoint(250, 0))
        animation.setDuration(500)
        animation.start()

    def event_log(self):
        self.btn31.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.btn5.close()
        self.mg_open.close()
        self.lbl20.show()
        self.btn6.show()
        self.btn7.show()
        self.btn8.show()

    def notes(self):
        self.lbl20.close()
        self.notes_open.show()
        self.btn9.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()

    def easter(self):
        self.lbl20.close()
        self.easter_open.show()
        self.btn10.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()

    def tasks(self):
        self.lbl20.close()
        self.tasks_open.show()
        self.btn11.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()

    # !!!
    def start(self):
        self.btn_next.close()
        self.btn1.show()
        self.lbl1.show()
        self.inv.show()
        self.inv_open.close()
        self.btn4.close()
        self.notes_open.close()
        self.btn9.close()
        self.mg_open.show()
        self.btn5.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()
        self.easter_open.close()
        self.btn10.close()
        self.btn11.close()
        self.tasks_open.close()
        self.btn31.show()
        self.lbl2.show()
        self.slider.close()
        self.btn_select.close()
        self.btn_start.close()

    # !!!
    # +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
    def volume_custom(self):
        # тут действие, но я поставил print что бы не выдавал ошибку
        sender = self.sender()
        print(f'def volume_custom(): {sender.text()} - {sender.isChecked()}')

        if sender.isChecked():
            self.slider.show()
        else:
            self.slider.close()

        sender.setText(f'Настройки громкости: ({self.slider.value()})')


# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    app.setWindowIcon(QtGui.QIcon('System_image/icon.png'))
    ex = MainWindow()
    ex.setWindowTitle('Story Telling')
    ex.setWindowIcon(QIcon('System_image/icon.png'))
    ex.showFullScreen()
    ex.show()
    sys.exit(app.exec_())
python
  • 1 个回答
  • 10 Views
Martin Hope
TFader
Asked: 2022-06-06 03:10:39 +0000 UTC

将鼠标悬停在 PyQt5 中的按钮上时如何更改按钮的图像?

  • 1

我需要当我将鼠标悬停在“开始”按钮上时,图片会变为另一张(我将在下面附上)。

图片:

这是第一张图片

第二:

第二张图,必须是鼠标悬停在按钮上的时候

我的代码:

import sys
from PyQt5 import QtWidgets, QtGui, QtCore, QtMultimedia
from PyQt5.Qt import *

russia_language = True

try:
    from PyQt5.QtWinExtras import QtWin
    myappid = 'mycompany.myproduct.subproduct.version'
    QtWin.setCurrentProcessExplicitAppUserModelID(myappid)
except ImportError:
    pass


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        filename = 'music.mp3'
        fullpath = QtCore.QDir.current().absoluteFilePath(filename)
        url = QtCore.QUrl.fromLocalFile(fullpath)
        content = QtMultimedia.QMediaContent(url)
        self.player = QtMultimedia.QMediaPlayer()
        self.player.setMedia(content)
        self.player.setVolume(50)
        self.player.play()

        self.slider = QSlider(Qt.Horizontal, self)
        self.slider.setRange(0, 100)
        self.slider.setValue(50)
        self.slider.setGeometry(800, 620, 300, 70)
        self.slider.hide()
        self.slider.valueChanged.connect(self.player.setVolume)

        def Button(btn_name, text, color1, px, resize, resize_2, move, move_2, color, mains):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet(
                "background-color: " + color1 + "; color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('MS Serif', 14))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            btn_name.clicked.connect(mains)

        def Button_2(btn_name, text, px, resize, resize_2, move, move_2, color, size):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet(
                "color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('Pusia-Bold.otf', size))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            # btn_name.clicked.connect(mains)

        def Button_3(btn_name, text, px, resize, resize_2, move, move_2, color, mains):
            btn_name.setMouseTracking(True);
            if text == "Настройки громкости":
                btn_name.setCheckable(True)
                btn_name.setText(f'{text}: ({self.slider.value()})')
            else:
                btn_name.setText(text)
            # +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

            btn_name.setStyleSheet(
                "color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('MS Serif', 14))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            btn_name.clicked.connect(mains)

        def Image(lbl_name, move_1, move_2, resize_1, resize_2):
            lbl_name.setPixmap(self.pix)
            lbl_name.move(move_1, move_2)
            lbl_name.resize(resize_1, resize_2)

        self.lbl2 = QtWidgets.QLabel(self)

        self.pix = QtGui.QPixmap("image.jpg")
        Image(self.lbl2, 0, 0, 1920, 1080)

        self.lbl1 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("System_image/textbox.png")
        Image(self.lbl1, 0, 800, 1920, 300)
        self.btn1 = QPushButton(self)
        Button_2(self.btn1, "Вы появились в неизвестном вам месте,\nгде было невероятно красиво", 10, 1400, 200, 260, 830, "White", 30)
        self.inv = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/inventory_btn.png")
        Image(self.inv, -30, 600, 156, 96)
        self.btn31 = QPushButton(self)
        Button_3(self.btn31, "", 0, 100, 100, 0, 600, "White", self.inventory)
        self.inv_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/inventory.png")
        Image(self.inv_open, 70, 40, 1770, 996)
        self.inv_open.close()
        self.btn4 = QPushButton(self)
        Button_3(self.btn4, "", 5, 100, 100, 1650, 110, "White", self.inventory_close)
        self.btn4.close()
        self.lbl20 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("System_image/Selection_menu.png")
        Image(self.lbl20, 0, 0, 1920, 1080)
        self.lbl20.close()
        self.mg_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/Magazine.png")
        Image(self.mg_open, -30, 480, 156, 96)
        self.btn5 = QPushButton(self)
        Button_3(self.btn5, "", 0, 100, 100, 0, 480, "White", self.event_log)
        self.btn6 = QPushButton(self)
        Button_3(self.btn6, "", 0, 460, 800, 160, 170, "White", self.notes)
        self.btn6.close()
        self.btn7 = QPushButton(self)
        Button_3(self.btn7, "", 0, 460, 800, 700, 170, "White", self.easter)
        self.btn7.close()
        self.btn8 = QPushButton(self)
        Button_3(self.btn8, "", 0, 460, 800, 1260, 170, "White", self.tasks)
        self.btn8.close()
        self.notes_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Notes.png")
        Image(self.notes_open, 0, 0, 1920, 1080)
        self.notes_open.close()
        self.btn9 = QPushButton(self)
        Button_3(self.btn9, "", 5, 80, 80, 1730, 50, "White", self.inventory_close)
        self.btn9.close()
        self.easter_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Easter.png")
        Image(self.easter_open, 0, 0, 1920, 1080)
        self.easter_open.close()
        self.btn10 = QPushButton(self)
        Button_3(self.btn10, "", 5, 80, 80, 1730, 50, "White", self.inventory_close)
        self.btn10.close()

        self.tasks_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Tasks.png")
        Image(self.tasks_open, 0, 0, 1920, 1080)
        self.tasks_open.close()
        self.btn11 = QPushButton(self)
        Button_3(self.btn11, "", 5, 80, 80, 1730, 50, "White", self.inventory_close)
        self.btn11.close()

        self.lbl2.close()
        self.btn31.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.mg_open.close()
        self.btn5.close()
        self.btn6.close()

        self.btn_start = QPushButton(self)
        Button_3(self.btn_start, "Начать", 20, 300, 100, 800, 400, "Black", self.start)
        # !!!
        self.btn_select = QPushButton(self)
        Button_3(self.btn_select, "Настройки громкости", 20, 500, 100, 710, 520, "Black", self.volume_custom)

    def inventory(self):
        self.btn31.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.inv_open.show()
        self.btn4.show()
        self.mg_open.close()
        self.btn5.close()
        self.btn6.close()

    def inventory_close(self):
        self.btn1.show()
        self.lbl1.show()
        self.inv.show()
        self.inv_open.close()
        self.btn4.close()
        self.notes_open.close()
        self.btn9.close()
        self.mg_open.show()
        self.btn5.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()
        self.easter_open.close()
        self.btn10.close()
        self.btn11.close()
        self.tasks_open.close()
        self.btn31.show()

    def animations(self):
        animation = QPropertyAnimation(self)
        animation.setTargetObject(self.btn_name)
        animation.setPropertyName(b'pos')
        animation.setStartValue(QPoint(250, -200))
        animation.setEndValue(QPoint(250, 0))
        animation.setDuration(500)
        animation.start()

    def event_log(self):
        self.btn31.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.btn5.close()
        self.mg_open.close()
        self.lbl20.show()
        self.btn6.show()
        self.btn7.show()
        self.btn8.show()

    def notes(self):
        self.lbl20.close()
        self.notes_open.show()
        self.btn9.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()

    def easter(self):
        self.lbl20.close()
        self.easter_open.show()
        self.btn10.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()

    def tasks(self):
        self.lbl20.close()
        self.tasks_open.show()
        self.btn11.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()

    # !!!
    def start(self):
        self.btn1.show()
        self.lbl1.show()
        self.inv.show()
        self.inv_open.close()
        self.btn4.close()
        self.notes_open.close()
        self.btn9.close()
        self.mg_open.show()
        self.btn5.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()
        self.easter_open.close()
        self.btn10.close()
        self.btn11.close()
        self.tasks_open.close()
        self.btn31.show()
        self.lbl2.show()
        self.slider.close()
        self.btn_select.close()
        self.btn_start.close()

    # !!!
    # +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
    def volume_custom(self):
        # тут действие, но я поставил print что бы не выдавал ошибку
        sender = self.sender()
        print(f'def volume_custom(): {sender.text()} - {sender.isChecked()}')

        if sender.isChecked():
            self.slider.show()
        else:
            self.slider.close()

        sender.setText(f'Настройки громкости: ({self.slider.value()})')


# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    app.setWindowIcon(QtGui.QIcon('System_image/icon.png'))
    ex = MainWindow()
    ex.setWindowTitle('Story Telling')
    ex.setWindowIcon(QIcon('System_image/icon.png'))
    ex.showFullScreen()
    ex.show()
    sys.exit(app.exec_())
python
  • 1 个回答
  • 10 Views
Martin Hope
TFader
Asked: 2022-06-03 22:07:28 +0000 UTC

如何在 PyQt5 中进行音量缩放,并在更改时将其音量更改为用户指定的音量

  • 2

我需要的是,当您按下“”按钮时,Настройки громкости会在音量刻度所在的位置打开一个菜单,当它改变时,所有声音的音量都会改变,并且这些设置会被保存。

我的代码:

#!/usr/bin/python3
import sys
from PyQt5 import QtWidgets, QtGui, QtCore, QtMultimedia
from PyQt5.Qt import *

try:
    from PyQt5.QtWinExtras import QtWin
    myappid = 'mycompany.myproduct.subproduct.version'
    QtWin.setCurrentProcessExplicitAppUserModelID(myappid)
except ImportError:
    pass


class Button(QPushButton):
    mouseMoved = pyqtSignal()
    def mouseMoveEvent(self, event):
        self.mouseMoved.emit()


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

        def Button(btn_name, text, color1, px, resize, resize_2, move, move_2, color):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet(
                "background-color: " + color1 + "; color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('MS Serif', 14))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            #btn_name.clicked.connect(mains)

        def Button_2(btn_name, text, px, resize, resize_2, move, move_2, color, size):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet(
                "color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('Gabriola', size))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            #btn_name.clicked.connect(mains)

        def Button_3(btn_name, text, px, resize, resize_2, move, move_2, color, mains):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet(
                "color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.setFont(QtGui.QFont('MS Serif', 14))
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            btn_name.clicked.connect(mains)

        def Image(lbl_name, move_1, move_2, resize_1, resize_2):
            lbl_name.setPixmap(self.pix)
            lbl_name.move(move_1, move_2)
            lbl_name.resize(resize_1, resize_2)

        self.lbl2 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("image.jpg")
        Image(self.lbl2, 0, 0, 1920, 1080)
        self.lbl1 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("System_image/textbox.png")
        Image(self.lbl1, 0, 800, 1920, 300)
        self.btn1 = QPushButton(self)

        Button_2(self.btn1, "Вы появились в неизвестном вам месте,\nгде было невероятно красиво", 10, 1000, 200, 430, 830, "White", 30)
        self.btn3 = QPushButton(self)
        Button_2(self.btn3, "", 10, 150, 100, -30, 500, "White", 14)
        self.inv = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/inventory_btn.png")
        Image(self.inv, -30, 600, 156, 96)
        self.btn31 = QPushButton(self)
        Button_3(self.btn31, "", 0, 100, 100, 0, 600, "White", self.inventory)
        self.inv_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/inventory.png")
        Image(self.inv_open, 70, 40, 1770, 996)
        self.inv_open.close()
        self.btn4 = QPushButton(self)
        Button_3(self.btn4, "", 5, 100, 100, 1650, 110, "White", self.inventory_close)
        self.btn4.close()
        self.lbl20 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("System_image/Selection_menu.png")
        Image(self.lbl20, 0, 0, 1920, 1080)
        self.lbl20.close()
        self.mg_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/Magazine.png")
        Image(self.mg_open, -30, 480, 156, 96)
        self.btn5 = QPushButton(self)
        Button_3(self.btn5, "", 0, 100, 100, 0, 480, "White", self.event_log)
        self.btn6 = QPushButton(self)
        Button_3(self.btn6, "", 0, 460, 800, 160, 100, "White", self.notes)
        self.btn6.close()
        self.btn7 = QPushButton(self)
        Button_3(self.btn7, "", 0, 460, 800, 700, 100, "White", self.easter)
        self.btn7.close()
        self.btn8 = QPushButton(self)
        Button_3(self.btn8, "", 0, 460, 800, 1260, 100, "White", self.tasks)
        self.btn8.close()
        self.notes_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Notes.png")
        Image(self.notes_open, 0, 0, 1920, 1080)
        self.notes_open.close()
        self.btn9 = QPushButton(self)
        Button_3(self.btn9, "", 5, 80, 80, 1730, 50, "White", self.inventory_close)
        self.btn9.close()
        self.easter_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Easter.png")
        Image(self.easter_open, 0, 0, 1920, 1080)
        self.easter_open.close()
        self.btn10 = QPushButton(self)
        Button_3(self.btn10, "", 5, 80, 80, 1730, 50, "White", self.inventory_close)
        self.btn10.close()

        self.tasks_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Tasks.png")
        Image(self.tasks_open, 0, 0, 1920, 1080)
        self.tasks_open.close()
        self.btn11 = QPushButton(self)
        Button_3(self.btn11, "", 5, 80, 80, 1730, 50, "White", self.inventory_close)
        self.btn11.close()

        self.lbl2.close()
        self.btn31.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.mg_open.close()
        self.btn5.close()
        self.btn6.close()
        self.btn_start = QPushButton(self)
        Button_3(self.btn_start, "Начать", 20, 300, 100, 800, 400, "Black", self.start)
        self.btn_select = QPushButton(self)
        Button_3(self.btn_select, "Настройки громкости", 20, 300, 100, 800, 520, "Black", self.volume_custom)

    def inventory(self):
        self.btn31.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.inv_open.show()
        self.btn4.show()
        self.mg_open.close()
        self.btn5.close()
        self.btn6.close()

    def inventory_close(self):
        self.btn3.show()
        self.btn1.show()
        self.lbl1.show()
        self.inv.show()
        self.inv_open.close()
        self.btn4.close()
        self.notes_open.close()
        self.btn9.close()
        self.mg_open.show()
        self.btn5.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()
        self.easter_open.close()
        self.btn10.close()
        self.btn11.close()
        self.tasks_open.close()
        self.btn31.show()

    def animations(self):
        animation = QPropertyAnimation(self)
        animation.setTargetObject(self.btn_name)
        animation.setPropertyName(b'pos')
        animation.setStartValue(QPoint(250, -200))
        animation.setEndValue(QPoint(250, 0))
        animation.setDuration(500)
        animation.start()

    def event_log(self):
        self.btn31.close()
        self.btn3.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.btn5.close()
        self.mg_open.close()
        self.lbl20.show()
        self.btn6.show()
        self.btn7.show()
        self.btn8.show()

    def notes(self):
        self.lbl20.close()
        self.notes_open.show()
        self.btn9.show()

    def easter(self):
        self.lbl2.close()
        self.easter_open.show()
        self.btn10.show()

    def tasks(self):
        self.lbl2.close()
        self.tasks_open.show()
        self.btn11.show()

    def start(self):
        self.btn3.show()
        self.btn1.show()
        self.lbl1.show()
        self.inv.show()
        self.inv_open.close()
        self.btn4.close()
        self.notes_open.close()
        self.btn9.close()
        self.mg_open.show()
        self.btn5.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()
        self.easter_open.close()
        self.btn10.close()
        self.btn11.close()
        self.tasks_open.close()
        self.btn31.show()
        self.lbl2.show()

    def volume_custom(self):
        #тут действие, но я поставил print что бы не выдавал ошибку
        print()


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    app.setWindowIcon(QtGui.QIcon('icon.png'))
    ex = MainWindow()
    ex.setWindowTitle('Story Telling')
    ex.setWindowIcon(QIcon('System_image/icon.png'))
    ex.showFullScreen()
    ex.show()
    filename = 'music.mp3'
    fullpath = QtCore.QDir.current().absoluteFilePath(filename) 
    url = QtCore.QUrl.fromLocalFile(fullpath)
    content = QtMultimedia.QMediaContent(url)
    player = QtMultimedia.QMediaPlayer()
    player.setMedia(content)
    player.play()
    sys.exit(app.exec_())
python
  • 1 个回答
  • 10 Views
Martin Hope
TFader
Asked: 2022-06-01 04:11:36 +0000 UTC

如何在 PyQt5 中更改按钮文本中的字体?

  • 1

我需要将文本(按钮)中的字体更改为我指定的字体(在我的情况下,更改为Pusia-Bold.ttf)。

我的代码:

#!/usr/bin/python3
import sys
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.Qt import *

try:
    from PyQt5.QtWinExtras import QtWin
    myappid = 'mycompany.myproduct.subproduct.version'
    QtWin.setCurrentProcessExplicitAppUserModelID(myappid)
except ImportError:
    pass


class Button(QPushButton):
    mouseMoved = pyqtSignal()

    def mouseMoveEvent(self, event):
        self.mouseMoved.emit()

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

        def Button(btn_name, text, color1, px, resize, resize_2, move, move_2, color):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet(
                "background-color: " + color1 + "; color: " + color + "; border-radius: " + str(px) + "px;}QPushButton:pressed {background-image: url(image/img2.1.png) }")
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            #btn_name.clicked.connect(mains)

        def Button_2(btn_name, text, px, resize, resize_2, move, move_2, color):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet(
                "color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            #btn_name.clicked.connect(mains)

        def Button_3(btn_name, text, px, resize, resize_2, move, move_2, color, mains):
            btn_name.setMouseTracking(True);
            btn_name.setText(text)
            btn_name.setStyleSheet(
                "color: " + color + "; border-radius: " + str(px) + "px")
            btn_name.resize(resize, resize_2)
            btn_name.move(move, move_2)
            btn_name.clicked.connect(mains)

        def Image(lbl_name, move_1, move_2, resize_1, resize_2):
            lbl_name.setPixmap(self.pix)
            lbl_name.move(move_1, move_2)
            lbl_name.resize(resize_1, resize_2)

        self.lbl2 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("image.jpg")
        Image(self.lbl2, 0, 0, 1920, 1080)
        self.lbl1 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("textbox.png")
        Image(self.lbl1, 0, 750, 1920, 300)
        self.btn1 = QPushButton(self)
        Button_2(self.btn1, "Вы появились в неизвестном вам месте,\nгде было невероятно красиво", 10, 1000, 100, 430, 810, "White")
        self.btn3 = QPushButton(self)
        Button_2(self.btn3, "", 10, 150, 100, -30, 500, "White")
        self.inv = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/inventory_btn.png")
        Image(self.inv, -30, 600, 156, 96)
        self.btn31 = QPushButton(self)
        Button_3(self.btn31, "", 0, 100, 100, 0, 600, "White", self.inventory)
        self.inv_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/inventory.png")
        Image(self.inv_open, 50, 0, 1770, 996)
        self.inv_open.close()
        self.btn4 = QPushButton(self)
        Button_3(self.btn4, "", 5, 100, 100, 1650, 60, "White", self.inventory_close)
        self.btn4.close()
        self.lbl2 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Selection_menu.png")
        Image(self.lbl2, 0, -70, 1920, 1080)
        self.lbl2.close()
        self.mg_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("Button_image/Magazine.png")
        Image(self.mg_open, -30, 480, 156, 96)
        self.btn5 = QPushButton(self)
        Button_3(self.btn5, "", 0, 100, 100, 0, 480, "White", self.event_log)
        self.btn6 = QPushButton(self)
        Button_3(self.btn6, "", 0, 460, 800, 160, 100, "White", self.notes)
        self.btn6.close()
        self.btn7 = QPushButton(self)
        Button_3(self.btn7, "", 0, 460, 800, 700, 100, "White", self.easter)
        self.btn7.close()
        self.btn8 = QPushButton(self)
        Button_3(self.btn8, "", 0, 460, 800, 1260, 100, "White", self.tasks)
        self.btn8.close()
        self.notes_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Notes.png")
        Image(self.notes_open, 0, 0, 1920, 1080)
        self.notes_open.close()
        self.btn9 = QPushButton(self)
        Button_3(self.btn9, "", 5, 80, 80, 1730, 50, "White", self.inventory_close)
        self.btn9.close()
        self.easter_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Easter.png")
        Image(self.easter_open, 0, 0, 1920, 1080)
        self.easter_open.close()
        self.btn10 = QPushButton(self)
        Button_3(self.btn10, "", 5, 80, 80, 1730, 50, "White", self.inventory_close)
        self.btn10.close()

        self.tasks_open = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("The_event_log/Tasks.png")
        Image(self.tasks_open, 0, 0, 1920, 1080)
        self.tasks_open.close()
        self.btn11 = QPushButton(self)
        Button_3(self.btn11, "", 5, 80, 80, 1730, 50, "White", self.inventory_close)
        self.btn11.close()

    def inventory(self):
        self.btn31.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.inv_open.show()
        self.btn4.show()
        self.mg_open.close()
        self.btn5.close()
        self.btn6.close()

    def inventory_close(self):
        self.btn3.show()
        self.btn1.show()
        self.lbl1.show()
        self.inv.show()
        self.inv_open.close()
        self.btn4.close()
        self.notes_open.close()
        self.btn9.close()
        self.mg_open.show()
        self.btn5.show()
        self.btn6.close()
        self.btn7.close()
        self.btn8.close()
        self.easter_open.close()
        self.btn10.close()
        self.btn11.close()
        self.tasks_open.close()
        self.btn31.show()

    def animations(self):
        animation = QPropertyAnimation(self)
        animation.setTargetObject(self.btn_name)
        animation.setPropertyName(b'pos')
        animation.setStartValue(QPoint(250, -200))
        animation.setEndValue(QPoint(250, 0))
        animation.setDuration(500)
        animation.start()

    def event_log(self):
        self.btn31.close()
        self.btn3.close()
        self.btn1.close()
        self.lbl1.close()
        self.inv.close()
        self.btn5.close()
        self.mg_open.close()
        self.lbl2.show()
        self.btn6.show()
        self.btn7.show()
        self.btn8.show()

    def notes(self):
        self.lbl2.close()
        self.notes_open.show()
        self.btn9.show()

    def easter(self):
        self.lbl2.close()
        self.easter_open.show()
        self.btn10.show()

    def tasks(self):
        self.lbl2.close()
        self.tasks_open.show()
        self.btn11.show()


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    app.setWindowIcon(QtGui.QIcon('icon.png'))
    ex = MainWindow()
    ex.resize(1920, 1080)
    ex.setWindowTitle('Story Telling')
    ex.setWindowIcon(QIcon('icon.png'))
    ex.show()
    sys.exit(app.exec_())
python
  • 3 个回答
  • 10 Views
Martin Hope
TFader
Asked: 2022-05-30 01:29:21 +0000 UTC

在PyQt5中按下按钮时按下按钮时如何执行永久操作

  • 1

我需要当按下“左”或“右”按钮时,图片会不停地移动,直到用户释放按钮,我的代码是:

import sys
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.Qt import *


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        
        centralWidget = QtWidgets.QWidget()                          # !!! +++
        self.setCentralWidget(centralWidget)                         # !!! +++
        
        self.btn1 = QPushButton(centralWidget)
        self.btn1.setMouseTracking(True)
        self.btn1.setText("<-- Влево")
# ???                                                                 ------> v
#        self.btn1.setStyleSheet("background-color: pink; border-radius: 14px;}")
        self.btn1.setStyleSheet("background-color: pink; border-radius: 14px;")
        self.btn1.setFont(QtGui.QFont("Pusia-Bold.otf", 17, QtGui.QFont.Bold))
        self.btn1.resize(300, 150)
        self.btn1.move(100, 400)
        self.btn1.clicked.connect(lambda : self.on_clicked("Влево"))
        
        self.btn2 = QPushButton(centralWidget)
        self.btn2.setMouseTracking(True);
        self.btn2.setText("Вправо -->")
        self.btn2.setStyleSheet("background-color: pink; border-radius: 14px;")
        self.btn2.setFont(QtGui.QFont("Pusia-Bold.otf", 17, QtGui.QFont.Bold))
        self.btn2.resize(300, 150)
        self.btn2.move(500, 400)
        self.btn2.clicked.connect(lambda : self.on_clicked("Вправо"))
        
        self.lbl1 = QtWidgets.QLabel(centralWidget)
        self.pix = QtGui.QPixmap("im.png").scaled(300, 300)
        self.lbl1.setPixmap(self.pix)
        self.lbl1.resize(300, 300)
        self.lbl1.move(300, 20)
        
        '''
        self.spinBox = QSpinBox(centralWidget)
        self.spinBox.setRange(5, 20)
        self.spinBox.setValue(7)
        self.spinBox.resize(100, 30)
        self.spinBox.move(400, 560) 
        '''
        self.num = 100 
        

    def on_clicked(self, text):
        print(f'{text}')  
        if text == "Влево":
            x, y = self.lbl1.pos().x(), self.lbl1.pos().y()
            x = x-self.num if x-self.num > 0 else 0
            self.lbl1.move(x, y)            
        elif text == "Вправо":
            x, y = self.lbl1.pos().x(), self.lbl1.pos().y()
            w = self.size().width() - self.lbl1.size().width() 
            x = x+self.num \
                if x+self.num < w else w
            self.lbl1.move(x, y) 
            
        
if __name__ == "__main__":        
    app = QtWidgets.QApplication(sys.argv)
    ex = MainWindow()
    ex.resize(900, 600)
    ex.show()
    sys.exit(app.exec_())
python
  • 1 个回答
  • 10 Views
Martin Hope
TFader
Asked: 2022-05-28 22:13:28 +0000 UTC

每次单击按钮时如何使图像移动一定距离?

  • 1

如何制作一个迷你“引擎”来控制图片的位置。

我的代码:

import sys
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.Qt import *

class Button(QPushButton):
    mouseMoved = pyqtSignal()
    def mouseMoveEvent(self, event):
        self.mouseMoved.emit()

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.btn1 = QPushButton(self)
        self.btn1.setMouseTracking(True);
        self.btn1.setText("Вперед")
        self.btn1.setStyleSheet("background-color: pink; border-radius: 14px;}")
        self.btn1.setFont(QtGui.QFont("Pusia-Bold.otf", 17, QtGui.QFont.Bold))
        self.btn1.resize(300, 150)
        self.btn1.move(450, 1000)
        
        self.btn2 = QPushButton(self)
        self.btn2.setMouseTracking(True);
        self.btn2.setText("Назад")
        self.btn2.setStyleSheet("background-color: pink; border-radius: 14px;}")
        self.btn2.setFont(QtGui.QFont("Pusia-Bold.otf", 17, QtGui.QFont.Bold))
        self.btn2.resize(300, 150)
        self.btn2.move(450, 1500)
        
        self.lbl1 = QtWidgets.QLabel(self)
        self.pix = QtGui.QPixmap("image.png")
        self.lbl1.setPixmap(self.pix)
        self.lbl1.resize(800, 800)
        self.lbl1.move(220, 100)
        self.show()
app = QtWidgets.QApplication(sys.argv)
ex = MainWindow()
sys.exit(app.exec_())

并在这里做类似的事情:

x = 10
while True:
    a = input("Введите 'вперёд'")
    if a == "Вперёд":
        x += 1
        print(x)
python
  • 1 个回答
  • 10 Views
Martin Hope
TFader
Asked: 2022-05-28 20:20:32 +0000 UTC

如何在 PyQt5 中单击按钮时移动小部件(图片/按钮)?

  • 1

单击按钮时如何移动按钮或图像?在我的例子中是一个按钮。

我的代码:

from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.Qt import *

class Button(QPushButton):
    mouseMoved = pyqtSignal()
    def mouseMoveEvent(self, event):
        self.mouseMoved.emit()

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

        self.btn1 = QPushButton(self)
        self.btn1.setMouseTracking(True);
        self.btn1.setText("Вперед")
        self.btn1.setStyleSheet("background-color: pink; border-radius: 14px;}")
        self.btn1.setFont(QtGui.QFont("Pusia-Bold.otf", 17, QtGui.QFont.Bold))
        self.btn1.resize(300, 150)
        self.btn1.move(450, 1000)
        self.show()
app = QtWidgets.QApplication(sys.argv)
ex = MainWindow()
sys.exit(app.exec_())
python
  • 1 个回答
  • 10 Views
Martin Hope
TFader
Asked: 2022-05-15 01:25:23 +0000 UTC

如何在 PyQt5 中制作屏幕旋转功能?

  • 1

如何在代码运行时启动屏幕旋转功能?

我的代码:

import sys
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.Qt import *


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        
        self.centralWidget = QWidget()                              
        self.setCentralWidget(self.centralWidget)                  
        
        self.lbl = QtWidgets.QLabel()
        self.pix = QtGui.QPixmap("iamge.png").scaled(400, 400)      # ваше фото
        self.lbl.setPixmap(self.pix)
        
        self.btn = QPushButton()
        self.btn.setText("Кнопка")
        self.btn.setStyleSheet("""
            background: pink; 
            color: black; 
            border-radius: 34px;
        """)
        self.btn.setFont(QtGui.QFont("Pusia-Bold.otf", 17, QtGui.QFont.Bold))
        self.btn.setFixedSize(300, 150)
        self.btn.setCheckable(True)
        self.btn.clicked.connect(self.show_image)

        layout = QGridLayout(self.centralWidget)
        layout.addWidget(self.lbl, 0, 0, Qt.AlignCenter)
        layout.addWidget(self.btn, 1, 0, Qt.AlignHCenter | Qt.AlignBottom)
        
        self.eff = QGraphicsOpacityEffect()
        self.eff.setOpacity(0.0)        
        self.lbl.setGraphicsEffect(self.eff)
        
        self.animation = QPropertyAnimation(self.eff, b'opacity')
        self.animation.setDuration(1000)       
        
    def show_image(self):
        if not self.btn.isChecked():       
            self.animation.setStartValue(1)
            self.animation.setEndValue(0)
        else:    
            self.animation.setStartValue(0)
            self.animation.setEndValue(1)
            
            QtCore.QTimer.singleShot(2000, self.btn.click)   # !!! 3000 + 4000 = 7000 

        self.animation.start() 


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    ex = MainWindow()
    ex.resize(420, 600)
    ex.show()
    sys.exit(app.exec_())
python
  • 1 个回答
  • 10 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