Python tkinter.ttk.Progressbar:如何更改水平杆的厚度
我正在我的应用程序中使用Python tkinter.ttk.Progressbar:如何更改水平杆的厚度,python,python-3.x,tkinter,ttk,Python,Python 3.x,Tkinter,Ttk,我正在我的应用程序中使用ttk.Progressbar。我在网上搜寻答案,但无济于事 我有下面的代码,它工作得很好。但我想改变钢筋的厚度 progressbar = ttk.Progressbar(myGui, orient=HORIZONTAL, length=400, mode="determinate", variable=value_progress
ttk.Progressbar
。我在网上搜寻答案,但无济于事
我有下面的代码,它工作得很好。但我想改变钢筋的厚度
progressbar = ttk.Progressbar(myGui, orient=HORIZONTAL,
length=400, mode="determinate",
variable=value_progress,
)
progressbar.pack()
我希望长度仍然是400,但从棒的顶部到底部,我希望减少它的一半或少于一半。(可以这么说,我想让我的酒吧节食)
但我正在拼命想办法
安迪的想法?提前感谢。在Python中似乎缺少宽度选项
使用Tkinter按钮解决问题。从这一点上,我已经能够创建一个有效的解决方案
解决这个问题的关键是将进度条添加到画布内部的。在画布中使用窗口不会在添加小部件时导致画布调整大小,这意味着我们可以控制进度条的宽度
我创建了一些工作示例代码:
from ttk import Progressbar
import Tkinter
class Example(Tkinter.Frame):
def __init__(self, parent):
Tkinter.Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
value_progress =50
self.parent.title("Progressbar Thingymawhatsit")
self.config(bg = '#F0F0F0')
self.pack(fill = Tkinter.BOTH, expand = 1)
#create canvas
canvas = Tkinter.Canvas(self, relief = Tkinter.FLAT, background = "#D2D2D2",
width = 400, height = 5)
progressbar = Progressbar(canvas, orient=Tkinter.HORIZONTAL,
length=400, mode="indeterminate",
variable=value_progress,
)
# The first 2 create window argvs control where the progress bar is placed
canvas.create_window(1, 1, anchor=Tkinter.NW, window=progressbar)
canvas.grid()
def main():
root = Tkinter.Tk()
root.geometry('500x50+10+50')
app = Example(root)
app.mainloop()
if __name__ == '__main__':
main()
总而言之,进度条的大小是一样的,但你看不到一半 如果您必须使用xpnative主题或类似主题,那么您可能无法选择以传统方式更改厚度。但是,如果使用默认主题,则可以使用样式配置厚度。可能还有其他主题也可以让您这样做,如果您打算在程序的外观和感觉方面做很多事情,您可能希望使用这些主题
from Tkinter import *
from ttk import *
def main():
root = Tk()
s = Style()
s.theme_use("default")
s.configure("TProgressbar", thickness=50)
pb = Progressbar(root, style="TProgressbar")
pb.pack()
root.mainloop()
main()
您只需使用pack manager的
ipady
选项即可
progressbar = ttk.Progressbar(myGui, orient=HORIZONTAL,
length=400, mode="determinate",
variable=value_progress,
)
progressbar.pack(ipady=10)
非常感谢你。人们会认为我们可以直接控制它。然而,没有对这一部分的支持只会让人跳出框框思考。这是在盒子外面。我花了一些时间才弄明白。我知道将其添加到画布会有所帮助,但画布会调整到进度条的大小!这时我找到了canvas create_窗口选项。很高兴它成功了,+1如果它有帮助的话在上面的例子让我思考之后,我做了很多思考,并提出了以下想法。首先,创建一个不会展开的框架:其次,将进度条放在框架内。最后,使用框架的高度属性控制进度条的厚度Progressbar和Frame y=LabelFrame(根,宽度=400,边框=0,高度=5)y.pack(pady=0)y.pack_propagate(0)Progressbar(y,mode='definite',length=400)pro.pack(side=BOTTOM)更简单的解决方案。