6

アプリでを使用してttk.Progressbarいます。私は答えを求めてネットを精査しましたが、役に立ちませんでした。

うまく機能している次のコードがあります。でもバーの太さを変えたい。

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

長さは 400 のままにしたいのですが、バーの上部から下部までを半分または半分以下に減らしたいと考えています。(バーでダイエットしたい、というか)

しかし、私は解決策を見つけようと頭を壁にぶつけています。

アンディのアイデア?前もって感謝します。

4

3 に答える 3

6

ttkプログレス バーには、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()

要約すると、プログレスバーは同じサイズですが、半分しか見えません!

于 2013-07-28T22:58:59.223 に答える