2017-06-07 9 views
0

コンソールでうまく動作するプログラムを作成しましたが、tkinterでこのプログラムを使用しようとしました。プログラムはまだ動作していますが、変換されたテキストはtkinterのEntryクラスに記述されたテキストではありません。コードは以下の通りである:私は変換ボタンを押しエントリに「こんにちは」と入力した場合にTkinterエントリのテキストを変換する際の問題

from tkinter import * 

def dictionary(): 
    ascii_dictionary = {chr(i): bin(i)[2:] for i in range(128)} 
    for i in ascii_dictionary: 
     if len(ascii_dictionary[i]) < 8: 
      count = 8 - len(ascii_dictionary[i]) 
      ascii_dictionary[i] = "".zfill(count) + ascii_dictionary[i] 
    non_ascii_dictionary = {chr(i): bin(int(bytes(chr(i).encode(encoding="utf-8")).hex(), 16))[2:10] + " " + 
         bin(int(bytes(chr(i).encode(encoding="utf-8")).hex(), 16))[10:18] for i in range(128, 512)} 
    dictionary = ascii_dictionary.copy() 
    dictionary.update(non_ascii_dictionary) 
    return dictionary 

class Application(): 

    def __init__(self): 
     self.window = Tk() 
     self.frame_1 = Frame() 
     self.frame_1.grid(row=0,column=0) 
     self.widgets() 
     self.mainloop = self.window.mainloop() 

    def widgets(self): 

     self.label_1 = Label(self.frame_1,text="Text To Binary:") 
     self.label_1.grid(row=0,column=0) 
     self.entry_1 = Entry(self.frame_1) 
     self.entry_1.grid(row=0,column=1) 
     self.button_1 = Button(self.frame_1,text="Convert",command=self.convert) 
     self.button_1.grid(row=0,column=2) 

    def convert(self): 
     text_1=str(self.entry_1) 
     return_value = dictionary() 
     list_1 = [return_value[j] for i in text_1 for j in return_value if i == j] 
     text_2 = " ".join(list_1) 
     print(text_1,text_2) 

instance=Application() 

例えば、私は、変換された単語が「.6138064.9675856" であることがわかります。あなたの意見では、何が問題なのですか?

答えて

2
text_1=str(self.entry_1) 

str(self.entry_1)entry_1ウィジェットの文字列表現を取得します。ウィジェットの文字列表現は、ユニークな識別子、小数点と数字の集合です。エントリ内にテキストが必要な場合は、getを使用します。

text_1=str(self.entry_1.get()) 
+0

ありがとうございます。問題は解決しました。 –

関連する問題