<p>在Python中<a href="http://docs.python.org/3.1/library/tkinter.ttk.html#progressbar" rel="noreferrer">ttk progress bar</a>似乎缺少宽度选项</p>
<p>使用Tkinter按钮解决问题(<a href="https://stackoverflow.com/a/11981214/1663352">here</a>)。从这一点上,我已经能够创建一个有效的解决方案</p>
<p>解决这个问题的关键是将进度条添加到画布内的<a href="http://effbot.org/tkinterbook/canvas.htm#Tkinter.Canvas.create_window-method" rel="noreferrer">window</a>中。在画布中使用窗口不会在添加小部件时导致画布调整大小,这意味着我们可以控制进度条的宽度</p>
<p>我创建了一些工作示例代码:</p>
<pre><code>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()
</code></pre>
<p>总而言之,进度条的大小是一样的,但你看不到一半</p>