и 1 ползунком громкости.
Ползунок работает, когда плеер играет, т.е. громкость меняется в зависимости от настройку ползунка.
когда он остановлен и положение ползунка изменено, мне нужно нажать кнопку воспроизведения 2 раза, чтобы громкость изменилась в соответствии с новой настройкой ползунка. нажатие 1 раз сохраняет только предыдущую настройку громкости.
Вот код:
Код: Выделить всё
import vlc
from tkinter import *
from tkinter import ttk
volume_ini=50
url='http://direct.fipradio.fr/live/fip-midfi.aac'
instance=vlc.Instance('--input-repeat=-1','--fullscreen')
player=instance.media_player_new()
media=instance.media_new(url)
player.set_media(media)
root=Tk()
window_height=240
window_width=320
screen_width=root.winfo_screenwidth()
screen_height=root.winfo_screenheight()
x_cordinate = int((screen_width/2) - (window_width/2))
y_cordinate = int((screen_height/2) - (window_height/2))
root.geometry("{}x{}+{}+{}".format(window_width, window_height, x_cordinate, y_cordinate))
v1=DoubleVar()
def st():
player.stop()
def pl():
global player
global volume_ini
player.audio_set_volume(volume_ini)
player.play()
class BarVolume(ttk.Scale):
def __init__(self, master):
global v1
global volume_ini
ttk.Scale.__init__(self,master,
variable=v1,from_=0,to=100,orient=HORIZONTAL,length=80)
self.volume=volume_ini
self.bind("", self.updateValue)
self.set(volume_ini)
def updateValue(self, event):
global volume_ini
global v1
global player
volume_ini=int(v1.get())
self.volume=volume_ini
labelText.set(str(volume_ini))
player.audio_set_volume(self.volume)
#self.geometry("{}x{}+{}+{}".format(window_width, window_height, x_cordinate, y_cordinate))
content1 = ttk.Frame(root)
content1.grid(column=0, row=0)
led_1=ttk.Button(content1, text='play',command=lambda:pl(),width=20)
led_1.grid(column=0, row=0)
led_2=ttk.Button(content1, text='stop',command=lambda:st(),width=10)
led_2.grid(column=0, row=1)
labelText = StringVar()
lbl=ttk.Label(content1,textvariable=labelText,width=20)
lbl.grid(column=0, row=3)
echelle=BarVolume(content1)
echelle.grid(column=0, row=4)
root.mainloop()
player.stop()
Я также написал тот же код с классом, встраивающим все окно
Подробнее здесь: https://stackoverflow.com/questions/786 ... is-stopped