我需要的是,当您按下“”按钮时,Настройки громкости
会在音量刻度所在的位置打开一个菜单,当它改变时,所有声音的音量都会改变,并且这些设置会被保存。
我的代码:
#!/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_())
对不起,你的代码很重,里面包含了很多不必要的东西。
您还可以使用晦涩的函数来填充
小部件对象(
def Button()
等def Button_2()
)。您使用小部件的绝对定位,例如:
因此,在我的屏幕上,除了“开始”和“音量设置”按钮名称的文本外,我看不到您的应用程序窗口的完整图片。
您需要学习布局管理部分 并在应用程序中使用布局管理器。
您正在滥用:
这些都是非常昂贵的操作,以这种方式使用它们是不正确的。
现在进入问题的重点。
我创建了一个滑块对象来改变音量:
单击“音量设置”按钮时显示,再次单击同一按钮时隐藏。
注意,单击“开始”按钮后,滑块与某种重叠,
label
无法与之交互。因此,您需要以某种方式以不同的方式放置它,或者,正如我上面写的,在Layout Management中使用小部件的放置。这是我在我的窗口中看到的,安装了我的所有图像。现在用您自己的替换所有图像并尝试。