2013-07-28 134 views
2

我在我的應用程序中使用了TTk.Progressbar。我已經在網上搜索了一個答案,但沒有效果。TTK.Progressbar:如何更改單槓的厚度

我有以下代碼工作正常。但我想改變酒吧的厚度。

progressbar = ttk.Progressbar(myGui, orient=HORIZONTAL, 
           length=400, mode="determinate", 
           variable=value_progress, 
          ) 
progressbar.pack() 

我想要的長度仍然是400,但是從酒吧到頂部到底部,我希望減少,如此它的一半或不到一半。 (我想要我的酒吧飲食,所以要說)

但我打我的頭靠在牆上找出解決方案。

安迪的想法?提前致謝。

回答

1

ttk progress bar似乎缺少Python中的寬度選項。

解決Tkinter按鈕問題(here)。由此我能夠創建一個工作解決方案。

解決該問題的關鍵是將進度條添加到畫布內的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() 

所以總結了進度條的大小相同,但你只是不能看到它的一半!

+0

非常感謝。人們會認爲我們可以直接控制它。但是,沒有人支持這一部分只是讓人想到這一點。這是在盒子外面。 –

+0

花了我一會兒來弄清楚一些事情。知道將它添加到畫布會有所幫助,但畫布會隨後調整到進度條的大小!那是當我找到畫布create_window選項。很高興它的工作,+1如果它的幫助 – Noelkd

+0

上面的例子讓我思考後,我做了很多思考,並提出了以下想法。 首先,創建一個不會展開的框架: 其次,將進度條放在框架內。 最後,用框架的高度屬性控制進度條的粗細。 #進度和幀 Y = LabelFrame(根,寬度= 400,邊界= 0,高度= 5) y.pack(pady = 0) y.pack_propagate(0) 親= ttk.Progressbar(Y ,模式='確定',長度= 400)pro.pack(side = BOTTOM) –

2

如果你必須使用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()