首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >tkinter.ttk.Progressbar:如何更改水平条的粗细

tkinter.ttk.Progressbar:如何更改水平条的粗细
EN

Stack Overflow用户
提问于 2013-07-29 04:37:11
回答 3查看 11.9K关注 0票数 6

我在我的应用程序中使用ttk.Progressbar。我已经在网上寻找答案了,但一无所获。

我有以下代码,这是工作良好。但是我想改变条的粗细。

代码语言:javascript
运行
复制
progressbar = ttk.Progressbar(myGui, orient=HORIZONTAL,
                              length=400, mode="determinate",
                              variable=value_progress,
                              )
progressbar.pack()

我希望长度仍然是400,但从条的顶部到底部,我希望将其减半或小于一半。(可以这么说,我想让我的酒吧节食)

但我正在拼命地想出一个解决方案。

安迪的点子?提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-29 06:58:59

ttk progress bar似乎缺少Python中的宽度选项。

使用变通方法(here)解决鼠标按键问题。由此,我已经能够创建一个有效的解决方案。

解决这个问题的关键是将进度条添加到画布内的window中。在画布中使用窗口不会在添加小部件时调整画布的大小,这意味着我们可以控制进度条的宽度。

我已经创建了一些可用的示例代码:

代码语言:javascript
运行
复制
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()

所以总而言之,进度条的大小是一样的,但是你看不到它的一半!

票数 6
EN

Stack Overflow用户

发布于 2013-08-09 12:52:09

如果您必须使用xpnative主题或类似的主题,那么您可能无法选择以常规方式更改厚度。但是,如果使用默认主题,则可以使用样式配置厚度。可能还有其他主题可以让你做到这一点,如果你打算在你的程序的外观和感觉上玩得很多,你可能希望使用这些主题。

代码语言:javascript
运行
复制
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()
票数 7
EN

Stack Overflow用户

发布于 2018-12-18 06:57:48

您可以只使用包管理器的ipady选项。

代码语言:javascript
运行
复制
progressbar = ttk.Progressbar(myGui, orient=HORIZONTAL,
                          length=400, mode="determinate",
                          variable=value_progress,
                          )
progressbar.pack(ipady=10)
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17912624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档