Psyduck - 可達鴨 之 鴨力山大2


Server : LiteSpeed
System : Linux premium217.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User : alloknri ( 880)
PHP Version : 8.1.34
Disable Function : NONE
Directory :  /opt/alt/python35/lib64/python3.5/idlelib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/alt/python35/lib64/python3.5/idlelib/ToolTip.py
# general purpose 'tooltip' routines - currently unused in idlefork
# (although the 'calltips' extension is partly based on this code)
# may be useful for some purposes in (or almost in ;) the current project scope
# Ideas gleaned from PySol

from tkinter import *

class ToolTipBase:

    def __init__(self, button):
        self.button = button
        self.tipwindow = None
        self.id = None
        self.x = self.y = 0
        self._id1 = self.button.bind("<Enter>", self.enter)
        self._id2 = self.button.bind("<Leave>", self.leave)
        self._id3 = self.button.bind("<ButtonPress>", self.leave)

    def enter(self, event=None):
        self.schedule()

    def leave(self, event=None):
        self.unschedule()
        self.hidetip()

    def schedule(self):
        self.unschedule()
        self.id = self.button.after(1500, self.showtip)

    def unschedule(self):
        id = self.id
        self.id = None
        if id:
            self.button.after_cancel(id)

    def showtip(self):
        if self.tipwindow:
            return
        # The tip window must be completely outside the button;
        # otherwise when the mouse enters the tip window we get
        # a leave event and it disappears, and then we get an enter
        # event and it reappears, and so on forever :-(
        x = self.button.winfo_rootx() + 20
        y = self.button.winfo_rooty() + self.button.winfo_height() + 1
        self.tipwindow = tw = Toplevel(self.button)
        tw.wm_overrideredirect(1)
        tw.wm_geometry("+%d+%d" % (x, y))
        self.showcontents()

    def showcontents(self, text="Your text here"):
        # Override this in derived class
        label = Label(self.tipwindow, text=text, justify=LEFT,
                      background="#ffffe0", relief=SOLID, borderwidth=1)
        label.pack()

    def hidetip(self):
        tw = self.tipwindow
        self.tipwindow = None
        if tw:
            tw.destroy()

class ToolTip(ToolTipBase):
    def __init__(self, button, text):
        ToolTipBase.__init__(self, button)
        self.text = text
    def showcontents(self):
        ToolTipBase.showcontents(self, self.text)

class ListboxToolTip(ToolTipBase):
    def __init__(self, button, items):
        ToolTipBase.__init__(self, button)
        self.items = items
    def showcontents(self):
        listbox = Listbox(self.tipwindow, background="#ffffe0")
        listbox.pack()
        for item in self.items:
            listbox.insert(END, item)

def _tooltip(parent):
    root = Tk()
    root.title("Test tooltip")
    width, height, x, y = list(map(int, re.split('[x+]', parent.geometry())))
    root.geometry("+%d+%d"%(x, y + 150))
    label = Label(root, text="Place your mouse over buttons")
    label.pack()
    button1 = Button(root, text="Button 1")
    button2 = Button(root, text="Button 2")
    button1.pack()
    button2.pack()
    ToolTip(button1, "This is tooltip text for button1.")
    ListboxToolTip(button2, ["This is","multiple line",
                            "tooltip text","for button2"])
    root.mainloop()

if __name__ == '__main__':
    from idlelib.idle_test.htest import run
    run(_tooltip)
Name
Size
Permissions
Options
Icons
--
drwxr-xr-x
__pycache__
--
drwxr-xr-x
idle_test
--
drwxr-xr-x
AutoComplete.py
8.985 KB
-rw-r--r--
AutoCompleteWindow.py
17.323 KB
-rw-r--r--
AutoExpand.py
3.315 KB
-rw-r--r--
Bindings.py
3.038 KB
-rw-r--r--
CREDITS.txt
1.822 KB
-rw-r--r--
CallTipWindow.py
5.894 KB
-rw-r--r--
CallTips.py
5.793 KB
-rw-r--r--
ChangeLog
55.066 KB
-rw-r--r--
ClassBrowser.py
6.835 KB
-rw-r--r--
CodeContext.py
8.161 KB
-rw-r--r--
ColorDelegator.py
10.35 KB
-rw-r--r--
Debugger.py
18.318 KB
-rw-r--r--
Delegator.py
1.019 KB
-rw-r--r--
EditorWindow.py
64.058 KB
-rw-r--r--
FileList.py
3.724 KB
-rw-r--r--
FormatParagraph.py
7.116 KB
-rw-r--r--
GrepDialog.py
5.004 KB
-rw-r--r--
HISTORY.txt
10.07 KB
-rw-r--r--
HyperParser.py
12.575 KB
-rw-r--r--
IOBinding.py
20.116 KB
-rw-r--r--
IdleHistory.py
3.957 KB
-rw-r--r--
MultiCall.py
18.136 KB
-rw-r--r--
MultiStatusBar.py
1.316 KB
-rw-r--r--
NEWS.txt
15.172 KB
-rw-r--r--
NEWS2x.txt
26.535 KB
-rw-r--r--
ObjectBrowser.py
3.882 KB
-rw-r--r--
OutputWindow.py
4.291 KB
-rw-r--r--
ParenMatch.py
6.557 KB
-rw-r--r--
PathBrowser.py
3.132 KB
-rw-r--r--
Percolator.py
3.104 KB
-rw-r--r--
PyParse.py
19.981 KB
-rw-r--r--
PyShell.py
57.467 KB
-rwxr-xr-x
README.txt
7.706 KB
-rw-r--r--
RemoteDebugger.py
11.726 KB
-rw-r--r--
RemoteObjectBrowser.py
0.941 KB
-rw-r--r--
ReplaceDialog.py
7.306 KB
-rw-r--r--
RstripExtension.py
1.025 KB
-rw-r--r--
ScriptBinding.py
7.872 KB
-rw-r--r--
ScrolledList.py
4.272 KB
-rw-r--r--
SearchDialog.py
3.054 KB
-rw-r--r--
SearchDialogBase.py
6.845 KB
-rw-r--r--
SearchEngine.py
7.31 KB
-rw-r--r--
StackViewer.py
4.322 KB
-rw-r--r--
TODO.txt
8.279 KB
-rw-r--r--
ToolTip.py
3.099 KB
-rw-r--r--
TreeWidget.py
14.672 KB
-rw-r--r--
UndoDelegator.py
10.723 KB
-rw-r--r--
WidgetRedirector.py
6.776 KB
-rw-r--r--
WindowList.py
2.414 KB
-rw-r--r--
ZoomHeight.py
1.27 KB
-rw-r--r--
__init__.py
0.327 KB
-rw-r--r--
__main__.py
0.155 KB
-rw-r--r--
aboutDialog.py
6.823 KB
-rw-r--r--
config-extensions.def
2.896 KB
-rw-r--r--
config-highlight.def
2.456 KB
-rw-r--r--
config-keys.def
7.595 KB
-rw-r--r--
config-main.def
2.503 KB
-rw-r--r--
configDialog.py
63.536 KB
-rw-r--r--
configHandler.py
31.69 KB
-rw-r--r--
configHelpSourceEdit.py
6.657 KB
-rw-r--r--
configSectionNameDialog.py
3.913 KB
-rw-r--r--
dynOptionMenuWidget.py
1.943 KB
-rw-r--r--
extend.txt
3.557 KB
-rw-r--r--
help.html
42.394 KB
-rw-r--r--
help.py
10.695 KB
-rw-r--r--
help.txt
17.48 KB
-rw-r--r--
idle.py
0.442 KB
-rw-r--r--
idle.pyw
0.557 KB
-rw-r--r--
idlever.py
0.405 KB
-rw-r--r--
keybindingDialog.py
12.125 KB
-rw-r--r--
macosxSupport.py
8.48 KB
-rw-r--r--
rpc.py
20.297 KB
-rw-r--r--
run.py
13.544 KB
-rw-r--r--
tabbedpages.py
17.986 KB
-rw-r--r--
textView.py
3.339 KB
-rw-r--r--