python如何创建问答窗口

阅读: 评论:0

python如何创建问答窗口

python如何创建问答窗口

自己改良音乐下载器,有你说的状态功能,不过是类似Consle的那种,整个源码都搬过来。#导入库

import requests

import json

import tkinter as tk

from tkinter import ttk

ssagebox as msgbox

import tkinter.filedialog as filebox

from tkinter import *

import webbrowser

import time

def getPos(value,in_list):

pos=0

for i in in_list:

if i==value:

break

else:

pos+=1

return pos

def delButton(tree):

x&#_children()

for item in x:

tree.delete(item)

headers = {

'Host': &#qq',

'Referer': '/',

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 '

'Safari/537.36 '

}

def douqq_post(mid):

"""

返回歌曲下载url

:param mid:歌曲mid

:return: 字典

"""

post_url = '.php'

data = {'mid': mid}

res = requests.post(post_url, data=data)

get_json = json.)

return eval(get_json)

def find_song(word):

global songNames,songmid,media_mid

delButton(tree)

"""

查找歌曲

:param word: 歌曲名

:return: 返回歌曲mid

"""

get_url = '?&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n'

'='&#()+'&w=' + word

try:

res1 = (get_url, headers=headers)

get_json = json.strip('callback()[]'))

jsons = get_json['data']['song']['list']

songNames=[]

songmid = []

media_mid = []

song_singer = []

i = 1

for song in jsons:

# print(i, ':' + song['songname'], '---', song['singer'][0]['name'], song['songmid'], song['media_mid'])

tree.insert("",i,text=str(i) ,values=(i,song['songname'],song['singer'][0]['name'])) #插入数据

songNames.append(song['songname'])

songmid.append(song['songmid'])

media_mid.append(song['media_mid'])

song_singer.append(song['singer'][0]['name'])

i = i + 1

except Exception as e:

win_print('歌曲查找函数发生错误!')

win_print(e)

def select():

for item in tree.selection():

item_text = tree.item(item,"values")

select=int(item_text[0])

#return songmid[select-1], song_singer[select-1]

song_mid=songmid[select-1]

song_name=songNames[select-1]

dic=douqq_post(song_mid)

postfix, url=choice_download(dic)

save_path=filebox.asksaveasfilename(title='保存音乐',initialfile=song_name+".m4a",filetypes=[('M4A音频文件','.m4a')])

win_print('正在将 {name} 下载到 {path} ......'.format(name=song_name,path=save_path))

download_file(url, save_path)

win_print('下载完成!')

def download_file(src, file_path):

"""

歌曲下载

:param src: 下载链接

:param file_path: 存储路径

:return: 文件路径

"""

r = (src, stream=True)

f = open(file_path, "wb")

for chunk in r.iter_content(chunk_size=512):

if chunk:

f.write(chunk)

return file_path

def choice_download(dic):

src = dic['m4a']

postfix='.m4a'

return postfix, place('//', '//').replace('/', '/')

def search(event=''):

songname&#()

#song_mid, singer = find_song(songname)

find_song(songname)

def win_print(word,warn=False):

consle.insert('end',word)

consle.insert('end','n')

win.update()

if warn:

consle['fg']='red'

win.update()

time.sleep(1)

consle['fg']='green'

win.update()

win=tk.Tk()

win.title('Music Area')

win.iconbitmap("./icon.ico")

searchPart=tk.Frame(win)

nameEnter=ttk.Entry(searchPart)

nameEnter.pack(fill=tk.X)

numEnter=ttk.Entry(searchPart)

numEnter.pack(side=tk.LEFT,fill=tk.X)

numEnter.insert(tk.END,'20')

ttk.Button(searchPart,text='搜索',command=search).pack(side=tk.RIGHT)

searchPart.pack(fill=tk.X)

win.bind('',search)

tree=ttk.Treeview(win,show="headings")#表格

tree["columns"]=("序号","歌曲","艺人")

tree.heading("序号",text="序号")

tree.heading("歌曲",text="歌曲") #显示表头

tree.heading("艺人",text="艺人")

tree.pack(fill=tk.BOTH)

ttk.Button(win,text='下载',command=select).pack(fill=tk.X)

ttk.Button(win,text='By 人工智障',command=lambda:webbrowser.open("www.github/totowang-hhh/")).pack(fill=tk.X)

consle=tk.Text(win,bg='black',fg='green',font=('courier new','15'))

consle.pack(fill=tk.BOTH,padx=5)

win.update()

win_print('2020 By 人工智障')

win.mainloop()

#def down():

信息栏组建名称是consle,用Text实现,向控制台添加内容的函数是win_print(),有两个传参分别是信息内容和级别(布尔值,表示是否为紧急),目前缺点是不能自动置底。

如果一定要单行的信息栏,不要这种类似Consle的界面,用Label或者Button做都可以的。如果用Label,记得改bg参数便于和背景区分。如果用Button,可以把command参数设成一个详细信息界面或者历史信息界面。

动态更改单行信息栏直接用component_name['text']='yourtext'(伪代码)即可。

例如用Button:#导入库、创建窗口

imoport tkinter as tk

win=tk.Tk()

#详细信息窗口

def info():

info_win=tk.Tk()

info_win.title('详细信息')

#···

#创建状态栏

msg=tk.Button(win,text='状态',command=info)

msg.pack()

#更改状态为“完成”

button['text']='完成'

本文发布于:2024-02-04 13:29:49,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170708359155999.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:问答   窗口   python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23