Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Python Tkinter hakkında yardım gerekiyor.
#11
Ben tkinter bilmiyorum ama mesela kivy de textinput için hint_text özelliği var sadece keyboard focus olduğunda kayboluyor, ama sen hiç kaybolmasın istiyorsun galiba.
Ara
Cevapla
#12
aynen öyle örnek vereyim
Kod:
from tkinter import *
root = Tk()
text = Entry()
text.insert("insert","örnek")
text.configure(state='disabled')
text.pack()

mainloop()

disabled kısmını readonly yazarsak seçimi yapıyor benim istediğim silmesin ve yazabilsin aynı zamanda
KOD YAZMAK İNSANA DÜŞÜNMEYİ ÖĞRETİR Cool
Ara
Cevapla
#13
aklıma zamnında beyaz'ın yaptığı skeçlerden biri geldi, diyo ki;

"bana pasta yapmanı istiyorum... yaş pasta değil... kuru pasta da değil... NEMLİ PASTA!!"

Demem o ki çok acayip bir şey bu istediğin Smile Çünkü entry de olan silinir de yazılırda zaten, ama sen dediğin kısımın sabit kalmasını istiyosun. Böyle istemenin sebebi kayıt esnasında ilk yazılanların silinmeyip kaydedilmesiyse bence bu veriyi kodlardan veya başka şekilde hallet. Ya da kullanım amacına göre çözüm üretelim, belki kafandakinin daha iyisini yapacaksın?
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#14
@ gecemor istediğimi buldum teşekkürler yinede kodlar:

PHP Kod:
try:
 
   # python 2.x
 
   import Tkinter as tk
except ImportError
:
 
   # python 3.x
 
   import tkinter as tk

class Example(tk.Frame):
 
   def __init__(selfparent):
 
       tk.Frame.__init__(selfparent)

 
       text ReadonlyText(self)
 
       sb tk.Scrollbar(selforient="vertical"command=text.yview)
 
       text.configure(yscrollcommand=sb.set)
 
       sb.pack(side="left"fill="y")
 
       text.pack(side="right"fill="both"expand=True)

 
       text.insert("end""You can edit this line\n")
 
       text.insert("end""You cannot edit or delete this line\n""readonly")
 
       text.insert("end""You can edit this, too.")

 
       text.tag_configure("readonly"foreground="darkgray")

class 
ReadonlyText(tk.Text):
 
   '''A text widget that doesn't permit inserts and deletes in regions tagged with "readonly"'''
    def __init__(self, *args, **kwargs):
        tk.Text.__init__(self, *args, **kwargs)

        # this code creates a proxy that will intercept
        # each actual insert and delete.
        self.tk.eval(WIDGET_PROXY)

        # this code replaces the low level tk widget
        # with the proxy
        widget = str(self)
        self.tk.eval('''
 
           rename {widget_{widget}
 
           interp alias {{}} ::{widget} {{}} widget_proxy _{widget
 
       '''.format(widget=widget))

WIDGET_PROXY = '''
if {[llength [info commands widget_proxy]] == 0} {
 
   # Tcl code to implement a text widget proxy that disallows
 
   # insertions and deletions in regions marked with "readonly"
 
   proc widget_proxy {actual_widget args} {
 
       set command [lindex $args 0]
 
       set args [lrange $args 1 end]
 
       if {$command == "insert"} {
 
           set index [lindex $args 0]
 
           if [_is_readonly $actual_widget $index "$index+1c"] {
 
               bell
                return 
""
 
           }
 
       }
 
       if {$command == "delete"} {
 
           foreach {index1 index2$args {
 
               if {[_is_readonly $actual_widget $index1 $index2]} {
 
                   bell
                    return 
""
 
               }
 
           }
 
       }
 
       # if we passed the previous checks, allow the command to 
 
       # run normally
 
       $actual_widget $command {*}$args
    
}

 
   proc _is_readonly {widget index1 index2} {
 
       # return true if any text in the range between
 
       # index1 and index2 has the tag "readonly"
 
       set result false
        if 
{$index2 eq ""} {set index2 "$index1+1c"}
 
       # see if "readonly" is applied to any character in the
 
       # range. There's probably a more efficient way to do this, but
 
       # this is Good Enough
 
       for {set index $index1} \
 
           {[$widget compare $index $index2]} \
 
           {set index [$widget index "$index+1c"]} {
 
               if {"readonly" in [$widget tag names $index]} {
 
                   set result true
                    break
                
}
 
           }
 
       return $result
    
}
}
'''

def main():
    root = tk.Tk()
    Example(root).pack(fill="both", expand=True)
    root.mainloop()

if __name__ == "__main__":
    main() 
KOD YAZMAK İNSANA DÜŞÜNMEYİ ÖĞRETİR Cool
Ara
Cevapla
#15
işte böyle bir şeye ihtiyaç duyabileceğim bir şey yapmadığım için nasıl kullanacağını bile anlamamıştım ki Smile görsel olarak bir şey verseydin belki kafamızda canlanırdı. "readonly", "normal" veya "disableble" gibi seçenekleri kaynaklarda görmüştüm. Ama sen hem silinmesin hem yazılsın falan derken iksinin ortasına düşünüyo insan Smile Neyse şimdi bulduğun kodları çalıştırınca anladım. Kısmi olarak eklemeyi tam olarak aşağıdaki satırda yapabiliyosun bu durumda.

text.insert("end", "You cannot edit or delete this line\n", "readonly")
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#16
@ gecemor Sondaki readonly olmadığı zaman eklemeyi yapıyor yazdığın kod
KOD YAZMAK İNSANA DÜŞÜNMEYİ ÖĞRETİR Cool
Ara
Cevapla
#17
Anlamadın beni, ekleme derken kodda

text.insert

kısmandan bahsediyorum, insert ile ekleme yapıyosun. Doğal olarak da ekleme yaptığında yazdırmaya izin vermeyeceğin içerik de "readonly" olacak işte. İletişim kuramıyoruz....
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#18
hocam widget_proxy kısmında birşey var çözemedim insert metodu 3 parametre alamıyor hata veriyor
KOD YAZMAK İNSANA DÜŞÜNMEYİ ÖĞRETİR Cool
Ara
Cevapla
#19
tam olarak kullanmak istedin kod nedir? Yukarıda kod vermiştin, onunla ilgili mi?
Turbobit Premium Link Çeviri | Turbobit Link Generator | http://turbobit.qpython.club
Cevapla
#20
Yorumu yanlış yere yazdığım için özür dilerim fakat konu açmak için yeterli mesajım yok. Bi arkadaş zamanında terminalden ubuntu sunucuya bağlanmak için py dosyası hazırlamıştı. Böylece qpython da net olayı açıkken arkadaşın verdiği dosya ile sunucumuza bağlanabiliyorduk python ile. Bu dosyanın konusunu hatırlayan var mı? Çok lazım cidden.
Ara
Cevapla

{lang: 'en'}


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  15gb .myd uzantılı dosya python ile okutma perry 1 1,823 27-11-2022, Saat: 17:59
Son Yorum: perry
Question Python Dili Soru & Cevap gecemor 1,493 1,153,341 08-11-2022, Saat: 11:18
Son Yorum: Antonyobanderas
  GÜNCEL Python request , c# request e göre çok yavaş ne yapabilirim perry 12 4,773 28-09-2022, Saat: 20:27
Son Yorum: krast
  YENİ Python Pyqt5 memory leak sorunu perry 3 2,254 28-09-2022, Saat: 11:33
Son Yorum: gecemor
  YENİ PYTHON ads approval CaglarDevv 2 2,089 04-07-2022, Saat: 01:23
Son Yorum: CaglarDevv

Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi
Change Theme