Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d46ffc6

Browse files
author
Biswajit Behera
committed
Added Sales-and-Order-Management-System by Biswajit-Behera for issue avinashkranjan#1644
1 parent dcfb2a3 commit d46ffc6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+1343
-179
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#Pycache
2+
**/.pyc
3+
**/__pycache__/**
4+
5+
# Vscode
6+
.code
7+
8+
#Pycharm
9+
.idea
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
import tkinter
2+
import tkinter.ttk
3+
4+
tkinter_umlauts=['odiaeresis', 'adiaeresis', 'udiaeresis', 'Odiaeresis', 'Adiaeresis', 'Udiaeresis', 'ssharp']
5+
class myentry(tkinter.Entry):
6+
def set_completion_list(self, completion_list):
7+
self._completion_list = sorted(completion_list, key=str.lower)
8+
self._hits = []
9+
self._hit_index = 0
10+
self.position = 0
11+
self.bind('<KeyRelease>', self.handle_keyrelease)
12+
13+
def autocomplete(self, delta=0):
14+
if delta:
15+
self.delete(self.position, tkinter.END)
16+
else:
17+
self.position = len(self.get())
18+
_hits = []
19+
for element in self._completion_list:
20+
if element.lower().startswith(self.get().lower()):
21+
_hits.append(element)
22+
if _hits != self._hits:
23+
self._hit_index = 0
24+
self._hits=_hits
25+
if _hits == self._hits and self._hits:
26+
self._hit_index = (self._hit_index + delta) % len(self._hits)
27+
if self._hits:
28+
self.delete(0,tkinter.END)
29+
self.insert(0,self._hits[self._hit_index])
30+
self.select_range(self.position,tkinter.END)
31+
32+
def handle_keyrelease(self, event):
33+
if event.keysym == "BackSpace":
34+
self.delete(self.index(tkinter.INSERT), tkinter.END)
35+
self.position = self.index(tkinter.END)
36+
if event.keysym == "Left":
37+
if self.position < self.index(tkinter.END):
38+
self.delete(self.position, tkinter.END)
39+
else:
40+
self.position = self.position-1
41+
self.delete(self.position, tkinter.END)
42+
if event.keysym == "Right":
43+
self.position = self.index(tkinter.END)
44+
if event.keysym == "Down":
45+
self.autocomplete(1)
46+
if event.keysym == "Up":
47+
self.autocomplete(-1)
48+
if len(event.keysym) == 1 or event.keysym in tkinter_umlauts:
49+
self.autocomplete()
50+
51+
class mycombobox(tkinter.ttk.Combobox):
52+
53+
def set_completion_list(self, completion_list):
54+
self._completion_list = sorted(completion_list, key=str.lower)
55+
self._hits = []
56+
self._hit_index = 0
57+
self.position = 0
58+
self.bind('<KeyRelease>', self.handle_keyrelease)
59+
self['values'] = self._completion_list
60+
61+
def autocomplete(self, delta=0):
62+
if delta:
63+
self.delete(self.position, tkinter.END)
64+
else:
65+
self.position = len(self.get())
66+
_hits = []
67+
for element in self._completion_list:
68+
if element.lower().startswith(self.get().lower()): # Match case insensitively
69+
_hits.append(element)
70+
if _hits != self._hits:
71+
self._hit_index = 0
72+
self._hits=_hits
73+
if _hits == self._hits and self._hits:
74+
self._hit_index = (self._hit_index + delta) % len(self._hits)
75+
if self._hits:
76+
self.delete(0,tkinter.END)
77+
self.insert(0,self._hits[self._hit_index])
78+
self.select_range(self.position,tkinter.END)
79+
80+
def handle_keyrelease(self, event):
81+
if event.keysym == "BackSpace":
82+
self.delete(self.index(tkinter.INSERT), tkinter.END)
83+
self.position = self.index(tkinter.END)
84+
if event.keysym == "Left":
85+
if self.position < self.index(tkinter.END):
86+
self.delete(self.position, tkinter.END)
87+
else:
88+
self.position = self.position-1
89+
self.delete(self.position, tkinter.END)
90+
if event.keysym == "Right":
91+
self.position = self.index(tkinter.END)
92+
if len(event.keysym) == 1:
93+
self.autocomplete()
94+
# TEST THIS
95+
def test(test_list):
96+
root = tkinter.Tk(className=' AutocompleteEntry demo')
97+
entry = myentry(root)
98+
entry.set_completion_list(test_list)
99+
entry.pack()
100+
entry.focus_set()
101+
combo = mycombobox(root)
102+
combo.set_completion_list(test_list)
103+
combo.pack()
104+
combo.focus_set()
105+
root.bind('<Control-Q>', lambda event=None: root.destroy())
106+
root.bind('<Control-q>', lambda event=None: root.destroy())
107+
root.mainloop()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /