首页 > 解决方案 > 类 tkinter 之间的 Spinbox .get()

问题描述

我目前正在尝试创建一个循环,其中创建的输入框的数量基于 Spinbox 的值,它与循环处于不同的类中。我知道我的代码已损坏,但我不确定从这里去哪里。spinbox 变量在 StudentAmount2 类中,输入框循环在 ClassLists3 类中。干杯。

import tkinter as tk
from tk import *
LARGE_FONT = ("Verdana", 12)

student_no = 0

class app(tk.Tk):
    
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        container = tk.Frame(self)
        
        container.pack(side="top", fil="both", expand=True)
        
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)
        
        self.frames = {}
        
        for F in (HomePage1,StudentAmount2,ClassList3,Subjects4):
        
            frame = F(container, self)
            
            self.frames[F] = frame
            
            frame.grid(row=0, column=0, sticky="nsew")
        
        self.show_frame(HomePage1)
        
    def show_frame(self, controller):
        frame = self.frames[controller]
        frame.tkraise()
    
    def set_number(self):
        student_no = 0
        student_no += Amount.get()
        
class HomePage1(tk.Frame):
    
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        label = tk.Label(self, text="Percentage from Grade")
        label.grid(row=0, column=0,pady=10, padx=10)
        
        button = tk.Button(self, text="Begin", command=lambda: controller.show_frame(StudentAmount2))
        button.grid(row=1, column=0)
        #home page is complete

class StudentAmount2(tk.Frame):
    
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        
        label = tk.Label(self, text="Number of Students")
        label.grid(row=0, column=0, columnspan=2)
        
        SetValue = tk.StringVar()
        SetValue.set("0")
        Amount = tk.Spinbox(self, from_=1, to=30)
        Amount.grid(row=1, column=0, pady=10)
        
        button = tk.Button(self, text="Done", command=lambda: controller.show_frame(ClassList3))
        button.grid(row=3, column=0)
        
        button1 = tk.Button(self, text="Set", command=lambda: controller.set_number())
        button1.grid(row=2, column=0)
    

class ClassList3(tk.Frame):
    
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        
        class_list_label = tk.Label(self, text="Class List")
        class_list_label.grid(row=0, column=0, columnspan=2)
        
        button1 = tk.Button(self, text="Done", command=lambda: controller.show_frame(Subjects4))
        button1.grid(row=31, column=0, columnspan=2)
        
        for y in range(0,2):
            for x in range(0, student_no):
                student = tk.Entry(self)
                student.grid(row=x+1, column=y, padx=5)
  
class Subjects4(tk.Frame):
    
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        
        button = tk.Button(self, text="Back",command=lambda: controller.show_frame(ClassList3))
        button.grid(row=0, column=0)
        
        
root = app()

root.mainloop()

标签: pythontkinter

解决方案


推荐阅读