Ich habe ein Label und Text-Widget in einem Rahmen für die Verwendung als Statusleiste. Wenn der Cursor sich bewegt (durch Drücken einer beliebigen Taste oder der Enter-Taste) der Status bar zeigt die Position. aber Aktualisierung ist langsam und wenn Sie "Tasten" schnell oder wiederholt die Cursor Positionsnummer stop die neue Cursor-Position zeigt. hier ist mein Code ...Cursor Position stats langsam in Aktualisierung, wenn der Cursor bewegt
Update:
ich einige Code geschrieben und jemand fragte mich, mehr Code zu schreiben. Hier ist das ganze Programm. hoffe es ist nicht zu viel. Ich habe auch ein Problem mit dem Text-Widget (txt1) zunehmende Größe mit der ausgewählten erhöhte Schriftgröße.
Sie bitte die Suchtext-Funktionen ignorieren, wie ich gerade um mit starrte spielen, dass es heute sein ein bisschen ein Durcheinander,
Dank, wayne.
Code:
from tkinter import *
from tkinter import Menu
from tkinter import filedialog
from tkinter import messagebox
from tkinter import ttk
from tkinter import Tk
from tkinter import font
class Mainfun:
def __init__(self, master):
super(Mainfun, self).__init__()
self.master = master
fnt1=''
pnt1=''
wh1=''
def mkfrm():
self.topframe=Frame(self.master)
self.topframe.pack(side=TOP, fill=X)
self.frame1=Frame(master, padx=15, pady=10)
self.frame1.pack(fill=BOTH)
self.bottomframe=Frame(master)
self.bottomframe.pack(side=BOTTOM, fill=X)
def mktxt():
self.txt1=Text(self.frame1, padx=10, pady=14, height=22, width=79, bg="white", fg="black", wrap=WORD)
self.txt1.pack(side=LEFT, fill=BOTH)
def mkscr():
self.scr=Scrollbar(self.frame1, command=self.txt1.yview)
self.scr.pack(side=RIGHT, fill=Y)
def cpupdated(event):
self.cp1=self.txt1.index(CURRENT)
self.txt2.delete(1.0, END)
self.txt2.insert(INSERT, self.cp1)
self.txt2.update()
def mkstat():
self.cp1=''
self.status=Label(self.bottomframe, anchor=W, padx=15, bd=2, text="CURSOR: (Row):/(Col): ", relief=SUNKEN)
self.status.pack(side=BOTTOM, fill=X)
self.txt2=Text(self.status, height=1, width=5, bd=1, fg="black",bg="light grey")
self.txt2.pack(anchor=W, padx=150)
self.txt1.bind('<KeyPress>', cpupdated)
def mkmnu():
self.mnu=Menu(self.topframe)
self.master.config(menu=self.mnu)
self.filmenu=Menu(self.mnu, tearoff=0)
self.filmenu.add_command(label="New", command=filnew)
self.filmenu.add_command(label="Open", command=flopen)
self.filmenu.add_command(label="Save As", command=filsaveas)
self.filmenu.add_separator()
self.filmenu.add_command(label="Print", command=mkprnt)
self.filmenu.add_separator()
self.filmenu.add_command(label="Exit", command=filexit)
self.mnu.add_cascade(label=" File ", menu=self.filmenu)
self.editmenu=Menu(self.mnu, tearoff=0)
self.editmenu.add_command(label="Cut", command=filcut)
self.editmenu.add_command(label="Copy", command=filcopy)
self.editmenu.add_command(label="Paste", command=filpaste)
self.editmenu.add_separator()
self.editmenu.add_command(label="Select All", command=filsel)
self.mnu.add_cascade(label=" Edit ", menu=self.editmenu)
self.helpmenu=Menu(self.mnu, tearoff=0)
self.helpmenu.add_command(label="Find", command=fndtxt)
self.helpmenu.add_command(label="Change Font", command=mkfont)
self.helpmenu.add_command(label="About Us", command=aboutus)
self.mnu.add_cascade(label=" Tools ", menu=self.helpmenu)
def filnew():
self.txt1.event_generate('<Control-n>')
self.txt1.delete(1.0, END)
def flopen():
self.fil=filedialog.askopenfile()
self.txt1.delete(1.0, END)
self.txt1.insert(INSERT, self.fil.read())
self.fil.close()
def filsaveas():
self.fil=filedialog.asksaveasfile()
self.text2=str(self.txt1.get(1.0, END))
self.fil.write(self.text2)
self.fil.close()
def mkprnt():
self.txt1.event_generate('<Control-P>')
def filexit():
self.msg1=messagebox.askquestion("Exit:", "Do you realy want to exit?")
if self.msg1=="yes":
self.master.quit()
def filcut(*event):
self.txt1.event_generate('<Control-x>')
def filcopy():
self.txt1.event_generate('<Control-c>')
def filpaste():
self.txt1.event_generate('<Control-v>')
def filsel():
self.txt1.event_generate('<Control-a>')
def aboutus():
self.msg2=messagebox.showinfo("About", "Text Edit: v1.0\nPython: v3.4.4\nTkinter GUI: v8.6\nCompiler: Py2Exe v0.9.9.2\nAuthor - Wayne Lampiasi\nEmail: [email protected]")
def fndselect():
self.text3=str(self.txt3.get(1.0, END))
self.text4=str(self.txt1.get(1.0, END))
if self.text3==self.text4:
print("found")
else:
print("not found")
def fndquit():
self.fndwin.destroy()
def fndtxt():
self.fndwin=Tk()
self.fndwin.title("- Find -")
self.fndwin.geometry("225x100")
self.fndwin.resizable(0,0)
self.label1=Label(self.fndwin)
self.label1.grid(row=1, column=1)
self.label2=Label(self.fndwin, text="Enter Search:")
self.label2.grid(row=2, column=1, padx=15)
self.txt3=Text(self.fndwin, fg="black", bg="white", height=1, width=12)
self.txt3.grid(row=2, column=2)
self.label4=Label(self.fndwin)
self.label4.grid(row=4, column=1)
self.button1=Button(self.fndwin, text="Go", command=fndselect)
self.button1.grid(row=5, column=1)
self.button2=Button(self.fndwin, text="Close", command=fndquit)
self.button2.grid(row=5, column=2)
self.label5=Label(self.fndwin)
self.label5.grid(row=6, column=1)
def mkfont():
self.subwin=Tk()
self.subwin.title("- Fonts -")
self.subwin.geometry("225x260")
self.subwin.resizable(0,0)
self.label1=Label(self.subwin)
self.label1.grid(row=1, column=1)
self.label2=Label(self.subwin, text="Choose Font:")
self.label2.grid(row=2, column=1)
self.cb1=ttk.Combobox(self.subwin, width=25, state='readonly')
self.Stringval1=self.cb1
self.cb1.grid(row=3, column=1)
self.cb1['values']=['Arial',
'Helvetica',
'Courier New',
'Comic Sans MS',
'Fixedsys',
'MS Sans Serif',
'MS Serif',
'Symbol',
'System',
'Times New Roman',
'Verdana']
self.label3=Label(self.subwin)
self.label3.grid(row=4, column=1)
self.label4=Label(self.subwin, text="Choose Size:")
self.label4.grid(row=5, column=1)
self.cb2=ttk.Combobox(self.subwin, width=25, state='readonly')
self.Intval2=self.cb2
self.cb2.grid(row=6, column=1)
self.cb2['values']=[" 8",
" 9",
" 10",
" 11",
" 12",
" 13",
" 14",
" 15",
" 16",
" 17",
" 18"]
self.label5=Label(self.subwin)
self.label5.grid(row=7, column=1)
self.label6=Label(self.subwin, text="Choose Weight")
self.label6.grid(row=8, column=1)
self.cb3=ttk.Combobox(self.subwin, width=25, state='readonly')
self.Sringval3=self.cb3
self.cb3.grid(row=9, column=1, padx=20)
self.cb3['values']=["normal",
"bold"]
self.label7=Label(self.subwin)
self.label7.grid(row=11, column=1)
self.button1=Button(self.subwin, text="Apply Fonts", command=selected)
self.button1.grid(row=12, column=1)
def subwinquit():
self.subwin.destroy()
def selected():
self.Stringval1=self.cb1.get()
fnt1 = self.Stringval1
self.Intval2=self.cb2.get()
pnt1 = self.Intval2
self.Stringval3=self.cb3.get()
wh1 = self.Stringval3
font.Font(family=(fnt1, pnt1, wh1))
self.txt1.config(font=(fnt1, pnt1, wh1))
self.subwin.eval('ttk::CancelRepeat')
self.subwin.destroy()
mkfrm()
mktxt()
mkscr()
mkstat()
mkmnu()
root=Tk()
root.title("Text Edit")
root.resizable(0,0)
obj1=Mainfun(root)
root.update()
root.mainloop()
Können Sie mehr Code anzeigen? z.B. was auch immer "Meister" erzeugt. Genug, um etwas zu tun, wäre besser. –
Wir brauchen den _whole_ code nicht. Bitte entfernen Sie den Code, der nicht mit dem Problem zusammenhängt. Wenn das Problem darin besteht, die Informationen zur Bindung anzuzeigen, benötigen Sie nur das Text-Widget, die Bind-Anweisung, die Funktion, die die Bindung verwendet, und ein paar Zeilen Code, um alles zusammen zu kleben. Bitte lesen und befolgen Sie den Hinweis unter [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (http://stackoverflow.com/help/mcve) –