最近在用GUI编写一个文件下载程序,其中遇见不少问题。有些问题已经解决,但有很多问题,暂时无法解决,先记录下来,等有解决方案了再更新。
1.Thinker中label文字的对齐方式?
tk.Label(labelframe, text="m3u8_url:", width=8, anchor=E, padx=10, pady=5).grid(column=0, row=0)
anchor 方位属性可以设置文字或者图片在label中放置的位置:e, s, w, n, center, es, en,ws, sn
而justify 用于当label总出行多行文字时,可选参数为: LEFT、 CENTER、RIGHT
2.在Grid布局中如何合并几个单元?
grid中提供columnspan和rowspan可以让插件跨行或列显示;
3.Grid布局中是否能够显示出可见网格,方便布置?
目前还没有找到方案
4.创建一个文本复选框
tk中没有复选框,需要导入from tkinter import ttk.其中需要注意一个问题,就是复选框的布局
如果以下列方式进行赋值,会报TypeError: ‘NoneType’ object does not support item assignment错误。
video_type = ttk.Combobox(labelframe, textvariable=type).grid(row=4, column=5)
video_type['value'] = ('mp4', 'avi')
解决方案: 需要先定义插件,然后在布局,在赋值,这样就不会存在问题。
video_type = ttk.Combobox(labelframe, textvariable=type)
video_type.grid(row=4, column=5)
video_type['value'] = ('mp4', 'avi')
5.ttk.Scrollbar样式调整问题
初始的滚动条比较短小,且在ttk中滚动条和原来经典类型不太一样。
解决方案: 下滚动条设置中让其填满布局格sticky=tk.N + tk.S + tk.E + tk.W
通过
style = ttk.Style()
style.theme_use('classic')
可以改变滚动条样式, 但具体有多少可以样式需要查一下。
content_listbox = Listbox(labelframe, height=20)
content_listbox.grid(row=1, column=8, rowspan=8, columnspan=4, sticky=E)
style = ttk.Style()
# style.theme_use('classic') # 可以改变滚动条样式
# style.configure("Vertical.TScrollbar", background="green", bordercolor="red", arrowcolor="white")
scroll = ttk.Scrollbar(labelframe, orient=VERTICAL, command=content_listbox.yview)
scroll.grid(row=1, column=12, rowspan=8, sticky=N + S + W)
content_listbox['yscrollcommand'] = scroll.set
6. 各类Entry框或者输入框的初始值设定,文字淡显示。
现在字体都是黑色的,而不是灰色的