新しい言語を習得しながら未知語を管理する簡単なGUIアプリケーションを作成しました。 Vocabularyと呼ばれるアプリはC#で書かれており、XML文書から単語をロード/保存します。私は最近WindowsからLinuxに切り替えたので、Pythonを使用してアプリケーションを書き直しています。アプリケーションに自動検索機能を実装するにはどうすればよいですか?
しかし、自分のアプリケーションに検索機能を実装する際に問題が発生しています。テキストウィジェットに単語を入力すると、自動的にリストボックスに表示されます。私がアプリケーションにしたいことを達成するために、テキストウィジェットのテキスト変更イベントを処理する必要があることを知っています。ここで
は私の元のC#メソッドです:
private void txt_Search_TextChanged(object sender, EventArgs e)
{
if (txt_Search.Text != "")
{
for (int i = listView1.Items.Count - 1; i >= 0; i--)
{
var item = listView1.Items[i];
if (item.Text.ToLower().Contains(txt_Search.Text.ToLower()))
{
item.BackColor = SystemColors.Highlight;
item.ForeColor = SystemColors.HighlightText;
}
else
{
listView1.Items.Remove(item);
}
}
if (listView1.SelectedItems.Count == 1)
{
listView1.Focus();
}
}
else
{
LoadWords();
RefreshAll();
foreach (ListViewItem item in listView1.Items)
{
item.BackColor = SystemColors.Window;
item.ForeColor = SystemColors.WindowText;
}
}
}
...と、ここで、これまでの私のPythonの関数である:
def txt_Search_text_changed(self, event = None):
if self.get_search() != None:
i = self.listBox.size() - 1
for x in range(i, 0, -1):
item = self.listBox.get(0, "end")[i]
if self.get_search().lower() in item.lower():
self.listBox.itemconfig(i, {'bg': 'red'})
else:
self.listBox.delete(item)
if len(self.listBox.curselection()) == 1:
self.listBox.focus()
else:
self.load_words()
self.refresh_all()
for item in self.listBox.get(0, "end"):
self.listBox.itemconfig(i, {'bg': 'white'})
私はのためのPythonの同等であるかわからない:
listView1.Items[i];
listView1.Items
あなたが「自動的にリストボックスに表示される」と言うとき、あなたはそれが自動的に追加されるべきであることを意味しています既存のリストボックス?または、単語がすでにリストボックスにあり、検索機能が単にリストボックスを検索して、検索された単語を強調表示する必要があると言っていますか? –
リストボックスを検索し、検索した単語を強調表示するだけです。 –
'self.listBox.get(0、" end ")[i]'を実行する理由はありません。ドキュメントを読むと、 'self.listBox.get(i)'がうまくいくことがわかります。 –