2014-09-02 1 views
1

풀다운 메뉴에서 선택한 파일에서 임의의 선을로드하고 선택한 선을 텍스트 창에 표시하는 tkinter에서 앱을 프로그래밍하려고했습니다.드롭 다운 선택 용 tkinter 변수가 비어 있습니다.

그것은 선택 "옵션"그러나 다음과 같은 오류의 결과로 오히려 "빈"문자열을 반환하지 않습니다 insert_text에서 변수 "VAR"처럼 보인다 :

"File not found error" (FileNotFoundError: [Errno2] No such file or directory: '').

도와주세요! 그냥 이렇게 빈 문자열을 반환 이후 수정되지 않은 빈 StringVar를 만드는 때문이다

#!/usr/bin/env python 
# Python 3 

import tkinter 
from tkinter import ttk 
import random 

class Application: 

    def __init__(self, root): 
     self.root = root 
     self.root.title('Random Stuff') 
     ttk.Frame(self.root, width=450, height=185).pack()  
     self.init_widgets() 
     var = tkinter.StringVar(root) 
     script = var.get() 
     choices = ['option1', 'option2', 'option3'] 
     option = tkinter.OptionMenu(root, var, *choices) 
     option.pack(side='right', padx=10, pady=10)    

    def init_widgets(self): 
     ttk.Button(self.root, command=self.insert_txt, text='Button', width='10').place(x=10, y=10) 
     self.txt = tkinter.Text(self.root, width='45', height='5') 
     self.txt.place(x=10, y=50) 

    def insert_txt(self): 
     var = tkinter.StringVar(root) 
     name = var.get() 
     line = random.choice(open(str(name)).readlines()) 
     self.txt.insert(tkinter.INSERT, line) 

if __name__ == '__main__': 
    root = tkinter.Tk() 
    Application(root) 
    root.mainloop() 
+0

내 질문을 편집 해 주셔서 감사합니다. :) 나는 그것이 이상하게 보인 것을 보았다. 그러나 내가 그것을 편집하려고 노력했을 때, 내가 처음 들어 왔던 것처럼 나왔다. : -/ – moupy

답변

2

.

OptionMenu는 다른 옵션을 선택할 때마다 지정된 메서드를 호출하는 command 매개 변수를 사용합니다. 지금, 당신은 당신에게 insert_txt를 교체,이 같은 방법을 호출 할 수 있습니다

def __init__(self): 
    # ... 
    self.var = tkinter.StringVar() 
    self.options = tkinter.OptionMenu(root, var, *choices, command=self.option_selected) 
    # ...  

def option_selected(self, event): 
    name = self.var.get() 
    # The stuff you already had 

는 또한, 당신은 Text 위젯을 비울 필요가, 그렇지 않으면 이전 텍스트가있을 것입니다. 제 생각에는 Entry 위젯이 더 좋다고 생각합니다.

+0

대단히 고마워, 이건 정말 많이 도와 줬어 !!! :))) 슬픈 듯이 나는 대리인이 부족한 것처럼 보이지만 아직 upvote 수 없습니다. : - / – moupy