# 添加选项 options = ["Option 1", "Option 2", "Option 3", "Option 4", "Option 5"] for option in options: listbox.insert(tk.END, option)如何显示成3列
时间: 2023-07-08 22:48:15 浏览: 49
要将列表框的选项显示成3列,可以使用`listbox.config()`方法配置选项的布局。以下是一个示例代码:
```
import tkinter as tk
root = tk.Tk()
# 创建列表框
listbox = tk.Listbox(root, width=30)
listbox.pack()
# 添加选项
options = ["Option 1", "Option 2", "Option 3", "Option 4", "Option 5"]
for option in options:
listbox.insert(tk.END, option)
# 设置布局
listbox.config(columns=3)
root.mainloop()
```
在上面的代码中,我们通过`listbox.config(columns=3)`方法将选项布局设置为3列。这样,选项就会按照3列进行显示。您可以根据需要自行调整列数。
相关问题
scrollbar = Scrollbar(root) scrollbar.pack(side=RIGHT, fill=Y) listbox = Listbox(root, yscrollcommand=scrollbar.set) for i in range(100): listbox.insert(END, "Item %s" % i) listbox.pack(side=LEFT, fill=BOTH) scrollbar.config(command=listbox.yview)帮我
好的,下面是加上注释的代码:
# 导入 Tkinter 库
from tkinter import *
# 创建主窗口
root = Tk()
# 创建一个 Scrollbar 控件,放置在主窗口的右侧
scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=Y)
# 创建一个 Listbox 控件,设置 yscrollcommand 为 Scrollbar 的 set() 方法
listbox = Listbox(root, yscrollcommand=scrollbar.set)
# 向 Listbox 中插入 100 个元素
for i in range(100):
listbox.insert(END, "Item %s" % i)
# 将 Listbox 控件放置在窗口的左侧,并填充窗口的所有可用空间
listbox.pack(side=LEFT, fill=BOTH)
# 将 Scrollbar 控件绑定到 Listbox 控件,使它们能够一起滚动
scrollbar.config(command=listbox.yview)
# 进入 Tkinter 主循环
root.mainloop()
def start_game(): # 创建难度选择窗口 nandu_screen = tk.Toplevel(start_screen) nandu_screen.title("请选择游戏难度") # global nandu nandu = tk.StringVar(value="easy") # 添加难度选项 nandu_listbox = tk.Listbox(nandu_screen, height=3) nandu_listbox.insert(1, "easy") nandu_listbox.insert(2, "medium") nandu_listbox.insert(3, "hard") nandu_listbox.pack(pady=10) # 设置选项默认值 nandu_listbox.selection_set(0) # 创建开始按钮 start_button = tk.Button(nandu_screen, text="开始", command=lambda: start_game_nandu(nandu.get(), nandu_screen)) start_button.pack(pady=10) # 将难度变量与选项框绑定 nandu.trace_add('write', lambda *args: nandu.set(nandu_listbox.get(tk.ACTIVE))) nandu_listbox.bind('<<ListboxSelect>>', lambda *args: nandu.set(nandu_listbox.get(tk.ACTIVE)))该段代码如何修改可以避免参数传递的错误和延迟
这段代码的参数传递错误和延迟可能是由于lambda函数导致的。修改方法是将lambda函数替换为普通函数,并使用默认参数来避免延迟。
例如,将lambda函数修改为普通函数:
```
def on_select(event=None):
nandu.set(nandu_listbox.get(tk.ACTIVE))
```
然后在绑定时使用该函数,并将默认参数设置为None:
```
nandu.trace_add('write', on_select)
nandu_listbox.bind('<<ListboxSelect>>', on_select)
```
这样就可以避免参数传递的错误和延迟。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
import re,tkinter,requests,threading,tqdm as tt root = tkinter.Tk() root.title('在线视频解析') root.geometry('500x590+550+350') headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0'} ac = tkinter.Listbox(root, width=50, height=20, font=('黑体', 12)) ac.grid(row=2, columnspan=10, sticky="n" + "s" + "w" + "e") def sousuo(): i = b1.get() ac.delete(0, 'end') def extract_music_info(content): p = '|' content = re.sub(p, '', content, flags=re.S) pattern = re.compile('subject.*?href="(.*?)">(.*?)
', flags=re.S) return pattern.findall(content) def search_music(): url = 'https://www.hifini.com/search-' + i + '-1.htm' response = requests.get(url=url, headers=headers) return response.text def update_listbox(music_list): for music in music_list: pppp = music[1] + ":" + music[0] ac.insert('end', pppp) content = search_music() music_list = extract_music_info(content) update_listbox(music_list) def xiazzi(): def download_music(): ppp = ac.get(ac.curselection()) pp = re.search('thread.*?htm', ppp) v = pp.group() url1 = 'https://www.hifini.com/' + v response = requests.get(url=url1, headers=headers) ppp = response.text l2 = re.search('<script>.*?title:..(.*?).,.*?author:.(.*?).,.*?url:..(.*?).,', ppp, flags=re.S) p = 'https://www.hifini.com/' + l2.group(3) response = requests.get(url=p, headers=headers, stream=True) # 设置 stream=True 以启用流式下载 total_size = int(response.headers.get('Content-Length')) music_name = '{}-{}.mp3'.format(l2.group(2), l2.group(1)) progress_bar = tt.tqdm(total=total_size, unit='B', unit_scale=True) # 创建进度条 with open(music_name, 'wb') as f: for data in response.iter_content(chunk_size=1024): progress_bar.update(len(data)) # 更新进度条 f.write(data) progress_bar.close() # 关闭进度条 print(music_name) threading.Thread(target=download_music).start() a1 = tkinter.Label(root, text='音乐下载器', anchor="center", font=('黑体', 24)) a1.grid(row=0, columnspan=10, sticky="n" + "s" + "w" + "e") b1 = tkinter.Entry(root, width=35, font=('黑体', 16), ) b1.grid(row=1, column=3, padx=15) search_button = tkinter.Button(root, text='搜索', command=sousuo) search_button.grid(row=1, column=4) download_button = tkinter.Button(root, text='下载', command=xiazzi) download_button.grid(row=3, column=4) root.mainloop() 添加 判断下载的文件是不是m4a如果就转为MP3,root上添加下载进度条![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
import re,tkinter,requests,threading,tqdm as tt root = tkinter.Tk() root.title('在线视频解析') root.geometry('500x590+550+350') headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0'} ac = tkinter.Listbox(root, width=50, height=20, font=('黑体', 12)) ac.grid(row=2, columnspan=10, sticky="n" + "s" + "w" + "e") def sousuo(): i = b1.get() ac.delete(0, 'end') def extract_music_info(content): p = '|' content = re.sub(p, '', content, flags=re.S) pattern = re.compile('subject.*?href="(.*?)">(.*?)
', flags=re.S) return pattern.findall(content) def search_music(): url = 'https://www.hifini.com/search-' + i + '-1.htm' response = requests.get(url=url, headers=headers) return response.text def update_listbox(music_list): for music in music_list: pppp = music[1] + ":" + music[0] ac.insert('end', pppp) content = search_music() music_list = extract_music_info(content) update_listbox(music_list) def xiazzi(): def download_music(): ppp = ac.get(ac.curselection()) pp = re.search('thread.*?htm', ppp) v = pp.group() url1 = 'https://www.hifini.com/' + v response = requests.get(url=url1, headers=headers) ppp = response.text l2 = re.search('<script>.*?title:..(.*?).,.*?author:.(.*?).,.*?url:..(.*?).,', ppp, flags=re.S) p = 'https://www.hifini.com/' + l2.group(3) response = requests.get(url=p, headers=headers, stream=True) # 设置 stream=True 以启用流式下载 total_size = int(response.headers.get('Content-Length')) music_name = '{}-{}.mp3'.format(l2.group(2), l2.group(1)) progress_bar = tt.tqdm(total=total_size, unit='B', unit_scale=True) # 创建进度条 with open(music_name, 'wb') as f: for data in response.iter_content(chunk_size=1024): progress_bar.update(len(data)) # 更新进度条 f.write(data) progress_bar.close() # 关闭进度条 print(music_name) threading.Thread(target=download_music).start() a1 = tkinter.Label(root, text='音乐下载器', anchor="center", font=('黑体', 24)) a1.grid(row=0, columnspan=10, sticky="n" + "s" + "w" + "e") b1 = tkinter.Entry(root, width=35, font=('黑体', 16), ) b1.grid(row=1, column=3, padx=15) search_button = tkinter.Button(root, text='搜索', command=sousuo) search_button.grid(row=1, column=4) download_button = tkinter.Button(root, text='下载', command=xiazzi) download_button.grid(row=3, column=4) root.mainloop() 将download_button带有下载行为的按钮添加进列表,![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)