本文整理汇总了Python中ui.Ui.build_menu方法的典型用法代码示例。如果您正苦于以下问题:Python Ui.build_menu方法的具体用法?Python Ui.build_menu怎么用?Python Ui.build_menu使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ui.Ui
的用法示例。
在下文中一共展示了Ui.build_menu方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from ui import Ui [as 别名]
# 或者: from ui.Ui import build_menu [as 别名]
class Menu:
def __init__(self):
reload(sys)
sys.setdefaultencoding('UTF-8')
self.datatype = 'main'
self.title = '网易云音乐'
self.datalist = ['排行榜', '艺术家', '新碟上架', '精选歌单', '我的歌单', 'DJ节目', '打碟', '收藏', '搜索', '帮助']
self.offset = 0
self.index = 0
self.presentsongs = []
self.player = Player()
self.ui = Ui()
self.netease = NetEase()
self.screen = curses.initscr()
self.screen.keypad(1)
self.step = STEP
self.stack = []
self.djstack = []
self.userid = None
self.username = None
try:
sfile = file(home + "/netease-musicbox/flavor.json",'r')
data = json.loads(sfile.read())
self.collection = data['collection']
self.account = data['account']
sfile.close()
except:
self.collection = []
self.account = {}
def start(self):
self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, self.index, self.step)
self.stack.append([self.datatype, self.title, self.datalist, self.offset, self.index])
while True:
datatype = self.datatype
title = self.title
datalist = self.datalist
offset = self.offset
idx = index = self.index
step = self.step
stack = self.stack
djstack = self.djstack
key = self.screen.getch()
self.ui.screen.refresh()
# 退出
if key == ord('q'):
break
# 上移
elif key == ord('k'):
self.index = carousel(offset, min( len(datalist), offset + step) - 1, idx-1 )
# 下移
elif key == ord('j'):
self.index = carousel(offset, min( len(datalist), offset + step) - 1, idx+1 )
# 向上翻页
elif key == ord('u'):
if offset == 0:
continue
self.offset -= step
# e.g. 23 - 10 = 13 --> 10
self.index = (index-step)//step*step
# 向下翻页
elif key == ord('d'):
if offset + step >= len( datalist ):
continue
self.offset += step
# e.g. 23 + 10 = 33 --> 30
self.index = (index+step)//step*step
# 前进
elif key == ord('l') or key == 10:
if self.datatype == 'songs' or self.datatype == 'djchannels' or self.datatype == 'help':
continue
self.ui.build_loading()
self.dispatch_enter(idx)
self.index = 0
self.offset = 0
# 回退
elif key == ord('h'):
# if not main menu
if len(self.stack) == 1:
continue
up = stack.pop()
self.datatype = up[0]
self.title = up[1]
self.datalist = up[2]
self.offset = up[3]
self.index = up[4]
# 搜索
elif key == ord('f'):
self.search()
#.........这里部分代码省略.........
示例2: __init__
# 需要导入模块: from ui import Ui [as 别名]
# 或者: from ui.Ui import build_menu [as 别名]
class Menu:
def __init__(self):
reload(sys)
sys.setdefaultencoding('UTF-8')
self.data_type = 'main'
# Title of the application
self.title = '网易云音乐'
# Main-menu list
self.data_list = ['排行榜', '艺术家', '新碟上架', '精选歌单', '我的歌单', 'DJ节目', '打碟', '收藏', '搜索', '帮助']
# Which page of the data_list is displayed (data_list may be displayed in multiple pages
self.page_index = 0
# The index of the current selected line
self.current_line_index = 0
self.present_songs = []
self.player = Player()
self.ui = Ui()
self.netease = NetEase()
self.screen = curses.initscr()
self.screen.keypad(1)
self.page_size = 10 # The number of lines that can be displayed on one page.
self.stack = []
self.dj_stack = []
self.user_id = None
self.user_name = None
# Read in the collection and account in flavor.json
try:
config_file = file(Constant.conf_dir + "/flavor.json", 'r')
data = json.loads(config_file.read())
self.collection = data['collection']
self.account = data['account']
config_file.close()
except:
self.collection = []
self.account = {}
def start(self):
# draw the main menu
self.ui.build_menu(self.data_type, self.title, self.data_list, self.page_index, self.current_line_index, self.page_size)
# push current menu into stack
self.stack.append([self.data_type, self.title, self.data_list, self.page_index, self.current_line_index])
# Main loop
while True:
# refresh the menu
data_type = self.data_type
title = self.title
data_list = self.data_list
page_index = self.page_index
idx = current_line_index = self.current_line_index
page_size = self.page_size
stack = self.stack
dj_stack = self.dj_stack
self.ui.screen.refresh()
# fetch a user's command
key = self.screen.getch()
# quit
if key == ord('q'):
break
# move up
elif key == ord('k') or key == curses.KEY_UP:
self.current_line_index = carousel(page_index, min(len(data_list), page_index + page_size) - 1, idx - 1)
# DEBUG
# self.ui.screen.addstr(0, 0,'current_line_index: {}, begin: {}, end: {}'.format(self.current_line_index, page_index, min(len(data_list), page_index+page_size)))
# move down
elif key == ord('j') or key == curses.KEY_DOWN:
self.current_line_index = carousel(page_index, min(len(data_list), page_index + page_size) - 1, idx + 1)
# DEBUG
# self.ui.screen.addstr(0, 0,'current_line_index: {}, begin: {}, end: {}'.format(self.current_line_index, page_index, min(len(data_list), page_index+page_size)))
# number shortcut
elif ord('0') <= key <= ord('9'):
if self.data_type == 'songs' or self.data_type == 'djchannels' or self.data_type == 'help':
continue
idx = key - ord('0')
self.ui.build_menu(self.data_type, self.title, self.data_list, self.page_index, idx, self.page_size)
self.ui.build_loading()
self.dispatch_enter(idx)
self.current_line_index = 0
self.page_index = 0
# 向上翻页
elif key == ord('u') or key == curses.KEY_PPAGE:
if page_index == 0:
continue
self.page_index -= page_size
# Move to first line of the page
self.current_line_index = (current_line_index - page_size) // page_size * page_size
# 向下翻页
elif key == ord('d') or key == curses.KEY_NPAGE:
if page_index + page_size >= len(data_list):
continue
#.........这里部分代码省略.........
示例3: __init__
# 需要导入模块: from ui import Ui [as 别名]
# 或者: from ui.Ui import build_menu [as 别名]
class Menu:
def __init__(self):
reload(sys)
sys.setdefaultencoding("UTF-8")
self.datatype = "main"
self.title = "网易云音乐"
self.datalist = ["排行榜", "艺术家", "新碟上架", "精选歌单", "我的歌单", "DJ节目", "打碟", "收藏", "搜索", "帮助"]
self.offset = 0
self.index = 0
self.storage = Storage()
self.storage.load()
self.collection = self.storage.database["collections"][0]
self.player = Player()
self.ui = Ui()
self.netease = NetEase()
self.screen = curses.initscr()
self.screen.keypad(1)
self.step = 10
self.stack = []
self.djstack = []
self.userid = None
self.username = None
self.resume_play = True
signal.signal(signal.SIGWINCH, self.change_term)
signal.signal(signal.SIGINT, self.send_kill)
self.START = time.time()
def change_term(self, signum, frame):
self.ui.screen.clear()
self.ui.screen.refresh()
def send_kill(self, signum, fram):
self.player.stop()
self.storage.save()
curses.endwin()
sys.exit()
def start(self):
self.START = time.time() // 1
self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, self.index, self.step, self.START)
self.ui.build_process_bar(
self.player.process_location,
self.player.process_length,
self.player.playing_flag,
self.player.pause_flag,
self.storage.database["player_info"]["playing_mode"],
)
self.stack.append([self.datatype, self.title, self.datalist, self.offset, self.index])
while True:
datatype = self.datatype
title = self.title
datalist = self.datalist
offset = self.offset
idx = index = self.index
step = self.step
stack = self.stack
djstack = self.djstack
self.screen.timeout(500)
key = self.screen.getch()
self.ui.screen.refresh()
# term resize
if key == -1:
self.ui.update_size()
self.player.update_size()
# 退出
if key == ord("q"):
break
# 退出并清除用户信息
if key == ord("w"):
self.storage.database["user"] = {"username": "", "password": ""}
break
# 上移
elif key == ord("k"):
self.index = carousel(offset, min(len(datalist), offset + step) - 1, idx - 1)
self.START = time.time()
# 下移
elif key == ord("j"):
self.index = carousel(offset, min(len(datalist), offset + step) - 1, idx + 1)
self.START = time.time()
# 数字快捷键
elif ord("0") <= key <= ord("9"):
if self.datatype == "songs" or self.datatype == "djchannels" or self.datatype == "help":
continue
idx = key - ord("0")
self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, idx, self.step, self.START)
self.ui.build_loading()
self.dispatch_enter(idx)
self.index = 0
self.offset = 0
# 向上翻页
elif key == ord("u"):
if offset == 0:
continue
#.........这里部分代码省略.........
示例4: __init__
# 需要导入模块: from ui import Ui [as 别名]
# 或者: from ui.Ui import build_menu [as 别名]
#.........这里部分代码省略.........
except:
return 0
def start_fork(self, version):
pid = os.fork()
if pid == 0:
Menu().update_alert(version)
else:
Menu().start()
def play_pause(self):
if len(self.storage.database["player_info"]["player_list"]) == 0:
return
if self.player.pause_flag:
self.player.resume()
else:
self.player.pause()
time.sleep(0.1)
def next_song(self):
if len(self.storage.database["player_info"]["player_list"]) == 0:
return
self.player.next()
time.sleep(0.1)
def previous_song(self):
if len(self.storage.database["player_info"]["player_list"]) == 0:
return
self.player.prev()
time.sleep(0.1)
def start(self):
self.START = time.time() // 1
self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, self.index, self.step, self.START)
self.ui.build_process_bar(self.player.process_location, self.player.process_length, self.player.playing_flag,
self.player.pause_flag, self.storage.database['player_info']['playing_mode'])
self.stack.append([self.datatype, self.title, self.datalist, self.offset, self.index])
if bind_global:
keybinder.bind(self.config.get_item("global_play_pause"), self.play_pause)
keybinder.bind(self.config.get_item("global_next"), self.next_song)
keybinder.bind(self.config.get_item("global_previous"), self.previous_song)
while True:
datatype = self.datatype
title = self.title
datalist = self.datalist
offset = self.offset
idx = index = self.index
step = self.step
stack = self.stack
djstack = self.djstack
self.screen.timeout(500)
key = self.screen.getch()
if bind_global:
keybinder.gtk.main_iteration(False)
self.ui.screen.refresh()
# term resize
if key == -1:
self.ui.update_size()
self.player.update_size()
# 退出
if key == ord('q'):
break
# 退出并清除用户信息
示例5: __init__
# 需要导入模块: from ui import Ui [as 别名]
# 或者: from ui.Ui import build_menu [as 别名]
class Menu:
def __init__(self):
reload(sys)
sys.setdefaultencoding("UTF-8")
self.config = Config()
self.datatype = "main"
self.title = "网易云音乐"
self.datalist = ["排行榜", "艺术家", "新碟上架", "精选歌单", "我的歌单", "DJ节目", "每日推荐", "私人FM", "搜索", "帮助"]
self.offset = 0
self.index = 0
self.storage = Storage()
self.storage.load()
self.collection = self.storage.database["collections"][0]
self.player = Player()
self.player.playing_song_changed_callback = self.song_changed_callback
self.cache = Cache()
self.ui = Ui()
self.netease = NetEase()
self.screen = curses.initscr()
self.screen.keypad(1)
self.step = 10
self.stack = []
self.djstack = []
self.userid = self.storage.database["user"]["user_id"]
self.username = self.storage.database["user"]["nickname"]
self.resume_play = True
self.at_playing_list = False
signal.signal(signal.SIGWINCH, self.change_term)
signal.signal(signal.SIGINT, self.send_kill)
self.START = time.time()
def change_term(self, signum, frame):
self.ui.screen.clear()
self.ui.screen.refresh()
def send_kill(self, signum, fram):
self.player.stop()
self.cache.quit()
self.storage.save()
curses.endwin()
sys.exit()
def alert(self, version):
latest = Menu().check_version()
if latest != version:
if platform.system() == "Darwin":
os.system(
'/usr/bin/osascript -e \'display notification "MusicBox Update is available"sound name "/System/Library/Sounds/Ping.aiff"\''
)
time.sleep(0.5)
os.system(
"/usr/bin/osascript -e 'display notification \"NetEase-MusicBox installed version:"
+ version
+ "\nNetEase-MusicBox latest version:"
+ latest
+ "\"'"
)
else:
os.system('/usr/bin/notify-send "MusicBox Update is available"')
def check_version(self):
# 检查更新
tree = ET.ElementTree(ET.fromstring(str(self.netease.get_version())))
root = tree.getroot()
return root[0][4][0][0].text
def start_fork(self, version):
# Hong, Fork a child process.
# Return 0 in the child and the child’s process id in the parent.
pid = os.fork()
if pid == 0:
Menu().alert(version)
else:
Menu().start()
def play_pause(self):
if len(self.storage.database["player_info"]["player_list"]) == 0:
return
if self.player.pause_flag:
self.player.resume()
else:
self.player.pause()
time.sleep(0.1)
def next_song(self):
if len(self.storage.database["player_info"]["player_list"]) == 0:
return
self.player.next()
time.sleep(0.1)
def previous_song(self):
if len(self.storage.database["player_info"]["player_list"]) == 0:
return
self.player.prev()
time.sleep(0.1)
def start(self):
# Hong, Return the time in seconds since the epoch as a floating point number.
self.START = time.time() // 1
self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, self.index, self.step, self.START)
#.........这里部分代码省略.........
示例6: __init__
# 需要导入模块: from ui import Ui [as 别名]
# 或者: from ui.Ui import build_menu [as 别名]
class Menu:
def __init__(self):
reload(sys)
sys.setdefaultencoding('UTF-8')
self.datatype = 'main'
self.title = '网易云音乐'
self.datalist = ['排行榜', '艺术家', '新碟上架', '精选歌单', '我的歌单', 'DJ节目', '打碟', '收藏', '搜索', '帮助']
self.offset = 0
self.index = 0
self.storage = Storage()
self.storage.load()
self.collection = self.storage.database['collections'][0]
self.player = Player()
self.cache = Cache()
self.ui = Ui()
self.netease = NetEase()
self.screen = curses.initscr()
self.screen.keypad(1)
self.step = 10
self.stack = []
self.djstack = []
self.userid = None
self.username = None
self.resume_play = True
signal.signal(signal.SIGWINCH, self.change_term)
signal.signal(signal.SIGINT, self.send_kill)
self.START = time.time()
def change_term(self, signum, frame):
self.ui.screen.clear()
self.ui.screen.refresh()
def send_kill(self, signum, fram):
self.player.stop()
self.cache.quit()
self.storage.save()
curses.endwin()
sys.exit()
def start(self):
self.START = time.time() // 1
self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, self.index, self.step, self.START)
self.ui.build_process_bar(self.player.process_location, self.player.process_length, self.player.playing_flag,
self.player.pause_flag, self.storage.database['player_info']['playing_mode'])
self.stack.append([self.datatype, self.title, self.datalist, self.offset, self.index])
while True:
datatype = self.datatype
title = self.title
datalist = self.datalist
offset = self.offset
idx = index = self.index
step = self.step
stack = self.stack
djstack = self.djstack
self.screen.timeout(500)
key = self.screen.getch()
self.ui.screen.refresh()
# term resize
if key == -1:
self.ui.update_size()
self.player.update_size()
# 退出
if key == ord('q'):
break
# 退出并清除用户信息
if key == ord('w'):
self.storage.database['user'] = {
"username": "",
"password": "",
}
break
# 上移
elif key == ord('k'):
self.index = carousel(offset, min(len(datalist), offset + step) - 1, idx - 1)
self.START = time.time()
# 下移
elif key == ord('j'):
self.index = carousel(offset, min(len(datalist), offset + step) - 1, idx + 1)
self.START = time.time()
# 数字快捷键
elif ord('0') <= key <= ord('9'):
if self.datatype == 'songs' or self.datatype == 'djchannels' or self.datatype == 'help':
continue
idx = key - ord('0')
self.ui.build_menu(self.datatype, self.title, self.datalist, self.offset, idx, self.step, self.START)
self.ui.build_loading()
self.dispatch_enter(idx)
self.index = 0
self.offset = 0
# 向上翻页
elif key == ord('u'):
if offset == 0:
continue
#.........这里部分代码省略.........
示例7: Menu
# 需要导入模块: from ui import Ui [as 别名]
# 或者: from ui.Ui import build_menu [as 别名]
#.........这里部分代码省略.........
self.player.resume()
else:
self.player.pause()
time.sleep(0.1)
def next_song(self):
if self._is_playlist_empty():
return
self.player.next()
time.sleep(0.5)
def previous_song(self):
if self._is_playlist_empty():
return
self.player.prev()
time.sleep(0.5)
def bind_keys(self):
if BINDABLE:
keybinder.bind(
self.config.get_item('global_play_pause'), self.play_pause)
keybinder.bind(self.config.get_item('global_next'), self.next_song)
keybinder.bind(
self.config.get_item('global_previous'), self.previous_song)
def unbind_keys(self):
if BINDABLE:
keybinder.unbind(self.config.get_item('global_play_pause'))
keybinder.unbind(self.config.get_item('global_next'))
keybinder.unbind(self.config.get_item('global_previous'))
def start(self):
self.START = time.time() // 1
self.ui.build_menu(self.datatype, self.title, self.datalist,
self.offset, self.index, self.step, self.START)
self.ui.build_process_bar(
self.player.process_location, self.player.process_length,
self.player.playing_flag, self.player.pause_flag,
self.storage.database['player_info']['playing_mode'])
self.stack.append([self.datatype, self.title, self.datalist,
self.offset, self.index])
try:
self.bind_keys()
except KeyError as e:
log.warning(e)
show_lyrics_new_process()
while True:
datatype = self.datatype
title = self.title
datalist = self.datalist
offset = self.offset
idx = index = self.index
step = self.step
stack = self.stack
self.screen.timeout(500)
key = self.screen.getch()
if BINDABLE:
keybinder.gtk.main_iteration(False)
self.ui.screen.refresh()
# term resize
if key == -1:
self.ui.update_size()
self.player.update_size()
# 退出
示例8: __init__
# 需要导入模块: from ui import Ui [as 别名]
# 或者: from ui.Ui import build_menu [as 别名]
class Menu:
def __init__(self):
reload(sys)
sys.setdefaultencoding('UTF-8')
self.datatype = 'main'
self.title = '网易云音乐'
self.datalist = ['排行榜', '艺术家', '新碟上架', '精选歌单', '我的歌单', 'DJ节目', '打碟', '收藏', '搜索', '帮助']
self.offset = 0
self.index = 0
self.presentsongs = []
self.player = Player()
self.ui = Ui()
self.netease = NetEase()
self.screen = curses.initscr()
self.screen.keypad(1)
self.step = 10
self.stack = []
self.djstack = []
self.userid = None
self.username = None
self.play_show_flag=False #定时器用,跳到播放歌曲
self.interrupt_handler=None
self.delay=10
self.play_p=False #歌曲播放标记
self.kill_p=0 #kill线程标记
self.run_p=False #定时运行标记
self.index_c=False #定时完成标志
self.key=[None,None] #存储按键值及按键时的时间
self.next=False #下一曲切换标记
self.play_time_str='0'
self.play_time_str_p=True #获取播放时间进程标记
self.play_length_str='0' #歌曲总长度
self.idx_idx=-1 #get_play_*函数用,保存上一个歌曲序列
self.mplayer_start_finished=False #mplayer获取歌曲完成标志
self.bar_p=False
try:
sfile = file(Constant.conf_dir + "/flavor.json",'r')
data = json.loads(sfile.read())
self.collection = data['collection']
self.account = data['account']
sfile.close()
except:
self.collection = []
self.account = {}
def interrupt_delay(self,delay=30): #定时中断``
self.play_p=self.player.return_idx()[1]
self.delay=delay
if (self.datatype=='songs' or self.datatype=='djchannels') and self.play_p:
#if self.kill_p==False :
# self.interrupt_stop()
while self.run_p :
self.kill_p=1
time.sleep(0.02)
self.play_show_flag=True
self.popen_interrupt()
def popen_interrupt(self): #创建定时进程
def runThread():
#d_num='sleep '+str(self.delay)
#self.interrupt_handler=subprocess.Popen(['sleep',10])
self.play_show_flag=False
self.run_p=True
number=int(self.delay/0.05)
for i in range(number):
time.sleep(0.05)
if self.kill_p==1:
self.kill_p=0
self.play_show_flag=True
break
if i==number-1:
self.index_c=True
self.index=self.player.return_idx()[0]
self.offset=self.index//self.step*self.step
time.sleep(0.2) #
self.index_c=False
self.return_play_list()
self.ui.build_menu(self.datatype,self.title,self.datalist,self.offset,self.index,self.step)
self.ui.progress_bar(self.play_time_str,self.play_length_str)
#self.interrupt_handler.wait()
#self.index=self.player.return_idx()[0]
self.kill_p=0
self.run_p=False
if self.play_show_flag:
self.thread=threading.Thread(target=runThread)
self.thread.setDaemon(True)
self.thread.start()
def key_m(self):
def run_key():
self.key[0]=self.screen.getch()
self.key[1]=time.time()
th=threading.Thread(target=run_key,name='keyboard_1')
th.setDaemon(True)
th.start()
def return_play_list(self): #返回播放当前播放列表
#.........这里部分代码省略.........