簡體   English   中英

ttk.Progressbar不會更改布局

[英]ttk.Progressbar does not change the Layout

我想ttk.Progressbar在我的ttk.Progressbar應用程序中使用ttk.Progressbar ,但我想先更改外觀。 我已在網上搜尋答案,但無濟於事。

如果我使用theme_use("default") ,以下代碼可以很好地工作,但是我不能使用它,因為它將改變ttk.Treeview的樣式。 對於ttk.Treeview我已經創建了element_create("Custom.Treeheading.border", "from", "default")layout

我決定進行另一種服裝布局,但不會更改小部件的外觀。

這是代碼:

import tkinter
from tkinter import ttk


def stoppb():
    pb.stop()

def startpb():
    pb.start(100)

master = tkinter.Tk()
master.minsize(width=500, height=300)
master.configure(bg="#2c2c2d")

s = ttk.Style()

#I can't use a theme because I already use create_element
#s.theme_use("default")

#I used this to figure out elements of the widget and its options
t = ttk.Progressbar(None)
tClass = t.winfo_class()
print("tClass", tClass)

layout = s.layout("Horizontal.TProgressbar")
print("layout", layout)

d = s.element_options("Horizontal.TProgressbar.trough")
e = s.element_options("Horizontal.TProgressbar")
print("element_options: Horizontal.TProgressbar.trough", d)
print("element_options: Horizontal.TProgressbar", e)

s.element_create("Niklas.Horizontal.TProgressbar.trough", "from", "default"
s.layout("Niklas.Horizontal.TProgressbar.trough", [
    ("Horizontal.Progressbar.trough", {"sticky": "nswe", "children": [
        ("Horizontal.Progressbar.pbar", {"side": "left", "sticky": "ns"})
    ]}),
])

s.configure("Niklas.Horizontal.TProgressbar.trough",
        troughcolor="#121212",
        background="#b2b2b2",
        thickness=1,
        troughrelief="flat",
        relief="flat",
        borderwidth=0)

pb = ttk.Progressbar(master,
                 style="Niklas.Horizontal.TProgressbar.trough",
                 orient="horizontal",
                 mode="determinate",
                 maximum=230)
pb.place(x=100, y=50)

tkinter.Button(master, text="Stop", command=stoppb).place(x=100, y=140)
tkinter.Button(master, text="Start", command=startpb).place(x=140, y=140)

master.mainloop()

但是我在牆上碰頭想出解決辦法。

如果只想更改其選項,則無需創建新元素,在這種情況下,只需配置“ Niklas.Horizo​​ntal.TProgressbar”樣式:

import tkinter
from tkinter import ttk

master = tkinter.Tk()

s = ttk.Style()

s.configure("Niklas.Horizontal.TProgressbar",
            troughcolor="#121212",
            background="#b2b2b2",
            thickness=1,
            troughrelief="flat",
            relief="flat",
            borderwidth=0)

pb = ttk.Progressbar(master,
                     style="Niklas.Horizontal.TProgressbar",
                     orient="horizontal",
                     mode="determinate",
                     maximum=230)
pb.grid(columnspan=2, sticky='ew')
pb.start()

master.mainloop()

我在您的代碼中發現的一個問題是,您給進度條指定了樣式“ Niklas.Horizo​​ntal.TProgressbar.trough”,它不是進度條樣式,而是樣式的元素,因此進度條無法正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM