无法进入入口窗口

2024-05-19 21:38:35 发布

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

我不明白为什么我的代码中rackGUI.py下的输入框是静态的/不允许输入任何内容。我相信所有的Entry对象都被正确地实例化了。我将textvariable指定为StringVar()的实例。我的直觉告诉我问题出在create_button实例化中的命令参数,但我不确定原因。我以为通过设置command = lambda:function这个函数不会被调用。在

单击菜单中的'New'时,main.py成功调用了成功调用input_form()rackGUI.create()。单击按钮'create_button'成功调用drawRack,它将打印到shell 'test'。我还添加了一个测试,在这个测试中,我打印了每个输入框的值类型,即print type(rack_name.get()),这成功地返回了类型'str'。在

所以主要问题还是输入框是静态的。在

以下是我的代码:

在配置.py在

"""
config.py
"""

import Tkinter as tk
import tkMessageBox as tkmb

#setup
root = tk.Tk()
root.title("TLA Database Tool")
frame = tk.Frame(height = 300, width = 250)
frame.pack()

在主.py在

^{pr2}$

在rackGUI.py在

"""
rackGUI.py
"""
from config import *

def input_form():
    form_frame = tk.Frame(frame)
    form_frame.pack()

    tk.Label(form_frame, text = "Rack Template Name (e.g., Knox Type 4)").pack()
    rack_name = tk.Entry(form_frame, textvariable = tk.StringVar())
    rack_name.pack()
    tk.Label(form_frame, text = "Dimensions").pack()
    tk.Label(form_frame, text = "#rack rows").pack()
    num_rack_rows = tk.Entry(form_frame, textvariable = tk.StringVar())
    num_rack_rows.pack()
    tk.Label(form_frame, text = "#nodes per row").pack()
    num_slots = tk.Entry(form_frame, textvariable = tk.StringVar())
    num_slots.pack()

    create_button = tk.Button(form_frame, text = "Create!",\
              command = lambda: drawRack(rack_name, num_rack_rows, num_slots))
    create_button.pack()

def drawRack(rack_name, num_rack_rows, num_slots):
    print rack_name.get(), num_rack_rows.get(), num_slots.get()

def create():    
    input_form()

def load():
    pass

Tags: textnamepyformcreateframenumpack