2016-08-10 4 views
-1

코드 조각이있어서 프로젝트에 맞게 변경하고 싶지만 내 항목 값을 가져 오는 방법을 모르는 경우에 사용할 변수가 있습니다. start 기능 당신은 당신이 그렇게처럼 .get() 기능을 사용할 수는 Tkinter에 입력 상자에 입력 한 텍스트에 액세스 할 코드의 fetch function 부분에 올바른 생각을 갖고있는 것 같다변수로 필드에서 값을 가져 오는 방법

#!/usr/bin/python3 
import wiringpi 
from time import sleep 
gpio = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_GPIO) 
shutterpin = 17 
flashpin = 18 
solenoidpin = 22 
gpio.pinMode(shutterpin,gpio.OUTPUT) 
gpio.pinMode(flashpin,gpio.OUTPUT) 
gpio.pinMode(solenoidpin,gpio.OUTPUT) 
wiringpi.pinMode(shutterpin,1) 
wiringpi.pinMode(flashpin,1) 
wiringpi.pinMode(solenoidpin,1) 


from Tkinter import * 
fields = 'size_drop1', 'interval_drop', 'size_drop2', 'lapse_before_flash',   'shutter_time' 


def fetch(entries): 
for entry in entries: 
    field = entry[0] 
    text = entry[1].get() 
    print('%s: "%s"' % (field, text)) 

def start(entries): 
    size_drop1 : float(size_drop1) 
    interval_drop : float(interval_drop) 
    size_drop2 : float(size_drop2) 
    lapse_before_flash : float(lapse_before_flash) 
    shutter_time : float(shutter_time) 

    sleep(lapse_before_flash) 
    gpio.digitalWrite(shutterpin,gpio.HIGH) 
    sleep(0.5) 
    gpio.digitalWrite(shutterpin,gpio.LOW) 


    gpio.digitalWrite(solenoidpin,gpio.HIGH) 
    sleep(size_drop1) 
    gpio.digitalWrite(solenoidpin,gpio.LOW) 

    gpio.digitalWrite(solenoidpin,gpio.HIGH) 
    sleep(interval_drop) 
    gpio.digitalWrite(solenoidpin,gpio.LOW) 

    gpio.digitalWrite(solenoidpin,gpio.HIGH) 
    sleep(size_drop2) 
    gpio.digitalWrite(solenoidpin,gpio.LOW) 


    sleep(lapse_before_flash) 
    gpio.digitalWrite(flashpin,gpio.HIGH) 
    sleep(0.5) 
    gpio.digitalWrite(flashpin,gpio.LOW) 

def makeform(root, fields): 
entries = [] 
for field in fields: 
    row = Frame(root) 
    lab = Label(row, width=15, text=field, anchor='w') 
    ent = Entry(row) 
    row.pack(side=TOP, fill=X, padx=5, pady=5) 
    lab.pack(side=LEFT) 
    ent.pack(side=RIGHT, expand=YES, fill=X) 
    entries.append((field, ent)) 
return entries 

if __name__ == '__main__': 
    root = Tk() 
    ents = makeform(root, fields) 
    root.bind('<Return>', (lambda event, e=ents: fetch(e))) 
    b1 = Button(root, text='Show', 
     command=(lambda e=ents: fetch(e))) 
    b1.pack(side=LEFT, padx=5, pady=5) 
    b2 = Button(root, text='start', command=(lambda e=ents: start(e))) 
    b2.pack(side=LEFT, padx=5, pady=5) 
    b3 = Button(root, text='Quit', command=root.quit) 
    b3.pack(side=LEFT, padx=5, pady=5) 
    root.mainloop() 

답변

1

: 여기 내 코드입니다

# main tk window 
root = Tk() 
# creates the entry_box 
entry_box = Entry(root, text='') 
# places the entry_box on the program 
entry_box.grid() 
# changes the text, starting on the first char of the entry_box to 'test' 
# (for testing purposes) 
entry_box.insert(0, 'test') 
# prints the typed test, in this case 'test' 
print(entry_box.get()) 
# run the program 
mainloop() 

이렇게하면 삽입 된 문자열이 인쇄되므로 걸릴 수 있습니다.

변수에 Entry을 할당해야하므로 .get() 함수를 호출 할 수 있습니다.

관련 문제