Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python类转换_Python_Python 3.x - Fatal编程技术网

Python类转换

Python类转换,python,python-3.x,Python,Python 3.x,我需要创建一个程序,它有两个按钮和一个显示计数器当前值的标签。一个按钮带有文本+1,应该向计数器添加一个,而另一个按钮标记为-1,应该从中减去一个(没有最小值和最大值)。计数器应该从零开始 在设计每个按钮的功能时,我们需要获取当前值,根据按钮的按下情况更改值,然后设置新值 提示:在上面的按钮示例中,您需要两个全局变量:一个用于当前计数,另一个用于标签小部件 我努力工作,经过多次尝试和错误后,我使其工作如下: from tkinter import * from tkinter.ttk impor

我需要创建一个程序,它有两个按钮和一个显示计数器当前值的标签。一个按钮带有文本+1,应该向计数器添加一个,而另一个按钮标记为-1,应该从中减去一个(没有最小值和最大值)。计数器应该从零开始

在设计每个按钮的功能时,我们需要获取当前值,根据按钮的按下情况更改值,然后设置新值

提示:在上面的按钮示例中,您需要两个全局变量:一个用于当前计数,另一个用于标签小部件

我努力工作,经过多次尝试和错误后,我使其工作如下:

from tkinter import *
from tkinter.ttk import *

def plus_one():
    """Increments counter by 1 """
    global click_counter, counter_label

    click_counter += 1
    counter_label["text"] = str(click_counter)

def minus_one():
    """Reduces counter value by 1"""
    global click_counter, counter_label

    click_counter -= 1
    counter_label["text"] = str(click_counter)

def main():
    """Program"""
    global click_counter, counter_label
    click_counter = 0
    window = Tk()

    counter_label = Label(window, text=str(click_counter))
    counter_label.grid(row=0, column=0)

    plus_one_button = Button(window, text="+1", command=plus_one)
    plus_one_button.grid(row=2, column=0)
    minus_one_button = Button(window, text="-1", command=minus_one)
    minus_one_button.grid(row=2, column=1)

    window.mainloop()

main()
我想知道是否有可能将GUI代码封装到一个类Countergui,如下所示:

from tkinter import *
from tkinter.ttk import *

# Write your code here

def main():
    """Set up the GUI and run it"""
    window = Tk()
    counter_gui = CounterGui(window)
    window.mainloop()

main()
其他信息:
重新创建程序,但将GUI代码封装在类计数器GUI中。该程序应具有与问题4中程序相同的功能:该程序有两个按钮和一个显示计数器当前值的标签。一个带有+1文本的按钮应向计数器添加一个,而另一个标记为-1的按钮应从中减去一个。计数器应该从零开始。

最好为计数器创建一个类,并且如果可以避免,最好不要创建
globals

class Counter(object):
    def __init__(self, start=0):
        self.count = start

    def increment(self):
        self.count += 1

    def decrement(self):
        self.count -= 1
最好不要创建一个混合使用类——这个类将负责处理值的存储、增量和减量

然后,您可以创建一个单独的类来绘制按钮和基本组件界面,并将
计数器的实例传递给它


祝你好运

我有点困惑。你能帮我理解代码吗。我理解“不创建全局”部分。但是,当我试图编写将GUI封装为类的代码时,我是一个空白。globals是一种为自己制造问题的好方法,特别是如果您在其他地方定义了它,并且在GUI类中重复使用变量名,我不知道你为什么要把它封装成一个类,我同意必须避免全局变量。但我很想知道我们是否可以修改我的程序,使GUI组件封装到一个类中。
Label
和“Button”很可能已经是类了——你应该看看它们的代码,看看它们是如何构造的。