我在我的应用中使用TTk.Progressbar。我已经在网上搜索答案,但无济于事。
我有以下代码,效果很好。但我想改变酒吧的厚度。
progressbar = ttk.Progressbar(myGui, orient=HORIZONTAL,
length=400, mode="determinate",
variable=value_progress,
)
progressbar.pack()
我希望长度仍然是400,但是从条形图的顶部到底部,我希望减少它的一半或更少一半。 (我希望我的酒吧节食,所以说)
但是我正在靠墙试图找出解决办法。
安迪的想法?提前致谢。答案 0 :(得分:3)
如果您必须使用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()
答案 1 :(得分:2)
ttk progress bar似乎缺少Python中的宽度选项。
使用解决方法(here)解决Tkinter按钮的问题。由此我就能够创建一个可行的解决方案。
解决问题的关键是将进度条添加到画布内的window。在添加窗口小部件时,使用画布内的窗口不会导致画布调整大小,这意味着我们可以控制进度条的宽度。
我创建了一些工作示例代码:
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()
总而言之,进度条大小相同,但你只能看到它的一半!
答案 2 :(得分:1)
或者您也可以使用打包管理器的ipady选项。
progressbar = ttk.Progressbar(myGui, orient=HORIZONTAL,
length=400, mode="determinate",
variable=value_progress,
)
progressbar.pack(ipady=10)