如何计数按钮点击?

2024-10-02 00:34:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在csv文件中计数和写入。在第一列中,我想写按钮的计数,在另一个按钮上,我想写文本。我创建了一个用csv编写的函数。我使用tkinter作为GUI

def functie2(l, m):
    with open('employee_file3.csv', 'a+', newline = "\n") as csv_file:
     
        global click
        click += 1
        print(click)


        writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
                
        writer.writerow({'Nr_crt': l, 'Prelucrare': m})

class Pag4(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        label = tk.Label(self, text="Alege prelucrarea")
        label.pack(pady=10,padx=10)
        self.controller = controller
        label = tk.Label(self, text="Pagina 4")
        button = tk.Button(self, text="Srunjire", command=lambda: [functie2('l', 'Strunjire'), controller.show_frame("Pag20")])
      
        button.pack()

Tags: csvtextselfdef按钮framelabeltk
1条回答
网友
1楼 · 发布于 2024-10-02 00:34:08

您需要在全局范围内初始化click。如果希望CSV文件中的第一列是单击次数,则应将l替换为click,而无需将l传递给functie2()

click = 0   # initialize click

def functie2(m):
    global click
    with open('employee_file3.csv', 'a+', newline="\n") as csv_file:
        click += 1
        print(click)

        writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
        writer.writerow({'Nr_crt': click, 'Prelucrare': m})

class Pag4(tk.Frame):
    def __init__(self, parent, controller):
        ...
        button = tk.Button(self, text="Srunjire", command=lambda: [functie2('Strunjire'), controller.show_frame("Pag20")])
        button.pack()

我建议将functie2()移动到Pag4类中,这样您就可以使用实例变量而不是全局变量:

class Pag4(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        label = tk.Label(self, text="Alege prelucrarea")
        label.pack(pady=10, padx=10)
        self.controller = controller
        self.click = 0
        label = tk.Label(self, text="Pagina 4")
        button = tk.Button(self, text="Srunjire", command=lambda: [self.functie2('Strunjire'), controller.show_frame("Pag20")])
        button.pack()

    def functie2(self, m):
        self.click += 1
        print(self.click)

        with open('employee_file3.csv', 'a+', newline="\n") as csv_file:
            writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
            writer.writerow({'Nr_crt': self.click, 'Prelucrare': m})

相关问题 更多 >

    热门问题