def __init__(self, master, repo, *a, **kw): GUIFrame.__init__(self, master, *a, **kw) if repo is None: refname = "" refs = [] else: # auto select HEAD as ref try: refname = repo.head.ref.name except TypeError: refname = repo.head.commit.hexsha refs = [r.name for r in repo.references] selected = StringVar() cb = Combobox(self, width = 41, # To fit 40 hex digits of git SHA1 values = refs, textvariable = selected ) cb.pack(side = "top", fill = "x", expand = True) selected.set(refname) self.selected = selected
def main(): root = Tk() frame = add_scrollbars(root, Frame, wheel=True) if False: def event_break(e): print("breaking %r" % e) return "break" frame.bind_all("<Button-4>", event_break, "+") lb = Label(frame, text="Label") lb.pack(fill=BOTH, side=TOP) cb = Combobox(frame, values=("1", "2", "3")) cb.pack(fill=BOTH, side=TOP) text = Text(frame) text.pack(fill=BOTH, expand=True, side=TOP) text.insert(END, "A\nMultiline\nMessage") for i in range(3, 100): text.insert(END, "line %d\n" % i) text2 = Text(frame) text2.pack(fill=BOTH, expand=True, side=TOP) for i in range(1, 200): text2.insert(END, "line %d\n" % i) bt1 = Button(frame, text="Bt#1") bt1.pack(side=LEFT) bt2 = Button(frame, text="Bt#2") bt2.pack(side=RIGHT) root.rowconfigure(2, weight=0) Label(root, text="Outer label").grid(row=2, column=0, columnspan=2, sticky="EW") if False: def event(e): print("event %r" % e) frame.bind("<Button-4>", event, "+") scrollable = set(["TCombobox", "Scrollbar", "Text"]) def event_all(e): w = e.widget m = e.widget while m is not None: if m is frame: break m = m.master else: print("Outer widget") return cls = w.winfo_class() print("cls = " + cls) if cls in scrollable: return # scroll here bind_all_mouse_wheel(frame, event_all, "+") root.mainloop()