2014-06-30 6 views
1

내 코드의 rackGUI.py 아래에있는 입력란이 정적/아무 것도 입력되지 않는 이유를 이해할 수 없습니다. Entry 개체가 모두 올바르게 인스턴스화되었다고 생각합니다. textvariable을 StringVar()의 인스턴스로 지정했습니다. 내 직감은 create_button 인스턴스화에서 명령 인수에 문제가 있음을 알려주지 만 그 이유는 확실하지 않습니다. 나는 함수를 호출하지 않을 것이라고 생각했다.tkinter : 입력 위젯에 입력 할 수 없습니다.

메뉴에서 'New'을 클릭하면 main.pyinput_form()을 성공적으로 호출하는 rackGUI.create()을 성공적으로 호출합니다. 'create_button' 버튼을 클릭하면 쉘 'test'에 인쇄되는 drawRack이 성공적으로 호출됩니다. 또한 각 입력란에 대해 값 유형을 인쇄 한 테스트 (예 : print type(rack_name.get()))를 추가하여 'str' 유형을 성공적으로 반환합니다.

다시 한번 주요 문제는 입력 상자가 정적이라는 것입니다. 다음은

내 코드입니다 :

config.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() 

main.py

#main.py 
from config import * 
import rackGUI 

def createRackTemplate(): 
    rackGUI.create() 
def loadRackTemplate(): 
    rackGUI.load() 

menubar = tk.Menu(root) 
filemenu = tk.Menu(menubar) 
filemenu.add_command(label = "New", command = createRackTemplate) 
filemenu.add_command(label = "Load", command = loadRackTemplate) 
menubar.add_cascade(label = "File", menu = filemenu) 

tkmb.showinfo("Welcome", "Under File click New to create a new rack template.\n\ 
Click load to load rack template.") 
root.config(menu = menubar) 
root.mainloop() 

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 
+0

저에게 잘 맞습니다 - Linux Mint 16, Python 2.7.5 – furas

+0

무슨 뜻입니까?'아무것도 입력 할 수 없습니까? ' 키보드를 사용할 수 없거나'set ("text")'을 사용하여 입력시 텍스트를 설정할 수 없습니까? – furas

+0

상자에 클릭하려고하지만 아무 것도 입력 할 수 없으므로 텍스트 커서가 표시되지 않습니다. – user3761743

답변

1

, 내 솔루션이 끝났다.

root.overrideredirect(True) 

Mac에서는이 텍스트 입력 문제가 발생하지만 Windows에서는 문제가 없습니다.

관련 문제