Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Tkinter. SrcollBar не скроллирует текст в Entry - только при применении ООП. [RSS Feed]

#1 Март 31, 2015 21:04:17

streetmover
От:
Зарегистрирован: 2010-06-25
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter. SrcollBar не скроллирует текст в Entry - только при применении ООП.

Доброго времени суток.

Python версии 2.7.6

Текст в Entry скроллировать вправо-влево не получается, хотя, пока похожий код не был “упакован” в класс - все работало (см. второй фрагмент). Как починить?

код:

# -*- coding: utf-8 -*-
from Tkinter import *
class MainWindow():
    def __init__(self, master=None):
        self.MainWindow = Tk()
        self.createWidgets()
        self.MainWindow.mainloop()
    def scrEnt(event, *L):
        
        if event == 'scroll':
                direction = L[0]
                discontinuity = L[1]
                self.ent.xview_scroll(direction, discontinuity)
        elif event == 'moveto':
                direction = L[0]
                self.ent.xview_moveto(direction)
    def createWidgets(self):
        self.scr = Scrollbar(self.MainWindow, orient = HORIZONTAL, command = self.scrEnt)
        self.ent = Entry(self.MainWindow, font='Arial 12', xscrollcommand = self.scr.set)
        self.ent.pack()
        self.scr.pack(fill = BOTH)
mw = MainWindow()

———————————————————–
а вот так, без ООП - работает:

# -*- coding: utf-8 -*-
from Tkinter import *
def scrEnt(event, *L):
    
    if event == 'scroll':
            direction = L[0]
            discontinuity = L[1]
            ent.xview_scroll(direction, discontinuity)
    elif event == 'moveto':
            direction = L[0]
            ent.xview_moveto(direction)
MainWindow = Tk()
scr = Scrollbar(MainWindow, orient = HORIZONTAL, command = scrEnt)
ent = Entry(MainWindow, font='Arial 12', xscrollcommand = scr.set)
ent.pack()
scr.pack(fill = BOTH)
MainWindow.mainloop()



Офлайн

#2 Март 31, 2015 21:20:10

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Tkinter. SrcollBar не скроллирует текст в Entry - только при применении ООП.

а как же self?!

def scrEnt(self, event, *L):
# . . .
class MainWindow():
    def __init__(self, master=None):
        self.MainWindow = Tk()
        self.createWidgets()
        self.MainWindow.mainloop()
    def scrEnt(self, event, *L):
        if event == 'scroll':
                direction = L[0]
                discontinuity = L[1]
                self.ent.xview_scroll(direction, discontinuity)
        elif event == 'moveto':
                direction = L[0]
                self.ent.xview_moveto(direction)
# . . .
P.S.
from Tkinter import *
так не делайте!



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Март 31, 2015 21:22:48)

Офлайн

#3 Апрель 1, 2015 07:54:19

streetmover
От:
Зарегистрирован: 2010-06-25
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Tkinter. SrcollBar не скроллирует текст в Entry - только при применении ООП.

terabayt

Спасибо.



Офлайн

#4 Апрель 1, 2015 14:44:56

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Tkinter. SrcollBar не скроллирует текст в Entry - только при применении ООП.

class MainWindow():
    def __init__(self, master=None):
        self.MainWindow = Tk()
        self.createWidgets()
        self.MainWindow.mainloop()

Лихо. И нафиг здесь ООП…

Офлайн

  • Начало
  • » GUI
  • » Tkinter. SrcollBar не скроллирует текст в Entry - только при применении ООП.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version