【问题标题】:Increasing the ProgressBar in tkinter by x amount entered将 tkinter 中的 ProgressBar 增加 x 输入量
【发布时间】:2019-11-22 00:07:57
【问题描述】:

我正在处理的功能有问题。我想要实现的目标是,当一个数字是:

我有一个进度条,最大限制为 1462。 每当在窗口中输入一个数字并按下 提交 按钮时,我只想让进度条增加输入到窗口中的数量。

我的 increase_progress 函数出现错误,无法达到预期的结果。

相关代码:

class Window(Frame):
    def __init__(self, master):
        super().__init__(master)
        master.title('Learning Python')
        master.configure(background='black')
        master.geometry('900x200')
        master.resizable(0, 0)


class Submit(Button):
    def __init__(self, master):
        super().__init__(master)
        self.configure(text='Submit', background='black', foreground='light green', highlightthickness=0,
                       border=0)


class Clear(Button):
    def __init__(self, master):
        super().__init__(master)
        self.configure(text='Clear', background='black', foreground='light green', highlightthickness=0,
                       border=0)


class ProgressBar(ttk.Progressbar):
    def __init__(self, master):
        super().__init__(master)
        self.config(orient='horizontal', maximum=1462, mode='determinate')



class PagesRead(Label):
    def __init__(self, master):
        super().__init__(master)
        self.config(text='How many page(s) did you read?', background='black', foreground='light green')


class EntryBox(Entry):
    def __init__(self, master):
        super().__init__(master)


def increase_progress():
    progress = int(entry.get())
    if progress:
        ProgressBar.step(progress)


root = tk.Tk()
app = Window(root)

bar = ProgressBar(root)
bar.pack(fill=tk.BOTH)

pages = PagesRead(root)
pages.pack()

entry = EntryBox(root)
entry.pack()


submit = Submit(root)
submit.pack()

clear = Clear(root)
clear.config(command=lambda: entry.delete(0, 'end'))
clear.pack()

app.mainloop()

【问题讨论】:

  • edit您的问题包含错误。
  • 我看到您仍在创建像 other question 中的小部件子类,Bryan 和我都提到这不是实现 OOP 的好方法..

标签: python user-interface tkinter


【解决方案1】:
import tkinter as tk
import tkinter.ttk as ttk


class Window(tk.Frame):
    def __init__(self, master):
        super().__init__(master)
        master.title('Learning Python')
        master.configure(background='black')
        master.geometry('900x200')
        master.resizable(0, 0)


class Submit(tk.Button):
    def __init__(self, master):
        super().__init__(master)
        self.configure(text='Submit', background='black', foreground='light green', highlightthickness=0,
                       border=0, command=increase_progress)


class Clear(tk.Button):
    def __init__(self, master):
        super().__init__(master)
        self.configure(text='Clear', background='black', foreground='light green', highlightthickness=0,
                       border=0)


class ProgressBar(ttk.Progressbar):
    def __init__(self, master):
        super().__init__(master)
        self.config(orient='horizontal', maximum=1462, mode='determinate')


class PagesRead(tk.Label):
    def __init__(self, master):
        super().__init__(master)
        self.config(text='How many page(s) did you read?', background='black', foreground='light green')


class EntryBox(tk.Entry):
    def __init__(self, master):
        super().__init__(master)


def increase_progress():
    progress = int(entry.get())
    if progress:
        bar['value'] += progress


root = tk.Tk()
app = Window(root)

bar = ProgressBar(root)
bar.pack(fill=tk.BOTH)

pages = PagesRead(root)
pages.pack()

entry = EntryBox(root)
entry.pack()


submit = Submit(root)
submit.pack()

clear = Clear(root)
clear.config(command=lambda: entry.delete(0, 'end'))
clear.pack()

app.mainloop()

您的问题是您没有在进度条中使用 value 方法。这段代码有效:) 看看

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多