0 / 0 / 0
Регистрация: 10.01.2017
Сообщений: 16

Как взять правильно текст с виджета Text?

08.05.2019, 21:26. Показов 3584. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу программу. Суть моей проблемы такова. Мне нужно по нажатию кнопки взять текст из поля Text и присвоить его переменной. Всё нормально присваивается но когда текст берётся то в конце добавляется ещё знак форматирования \n (перенос строки). В итоге программа ругается. Как с делать чтобы переменной присваивались только символы, если текст пишется без пробелов слитно.

Текст программы:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
from tkinter import *
L=list()
L2=list()
Z=str()
V=int()
K=str()
G=int()
n=3
PLUS=0
MINUS=0
def Bum1():
    global L
    global L2
    L=text1.get('1.0',END)
    for i in range(len(L)):
        if L[i]!=',':
            L2.append(L[i])
    text1.delete('1.0', END)
    label1['text']='Данные загружены. Выберите условия 1-го отбора. Нажмите кнопку "ПРИНЯТЬ"'
def Bum2():
    global Z
    global V
    Z=str(text2.get('1.0',END))
    V=int(text3.get('1.0',END))
    text2.delete('1.0', END)
    text3.delete('1.0', END)
    label1['text']='ОПЕРАЦИЯ ПРИНЯТА. Введите данные для 2-го отбора'
def Bum3():
    global K
    global G
    K=str(text4.get('1.0', END))
    G=int(text5.get('1.0', END))
    text4.delete('1.0', END)
    text5.delete('1.0', END)
    label1['text'] = 'ОПЕРАЦИЯ ПРИНЯТА. Нажмите кнопку "РАССЧИТАТЬ"'
def Bum4():
    global K
    global G
    global Z
    global V
    global L2
    global n
    global PLUS
    global MINUS
    if str(Z) == '=':
        for i in range(len(L2)):
            if int(L2[i]) == V:
                n = n + 1
                if n == X:
                    if str(K) == '=':
                        if int(L2[i + 1]) == G:
                            PLUS = PLUS + 1
                            n = 0
                        else:
                            MINUS = MINUS + 1
                            n = 0
                    elif str(K) == '<':
                        if int(L2[i + 1]) < G:
                            PLUS = PLUS + 1
                            n = 0
                        else:
                            MINUS = MINUS + 1
                            n = 0
                    else:
                        if int(L2[i + 1]) > G:
                            PLUS = PLUS + 1
                            n = 0
                        else:
                            MINUS = MINUS + 1
                            n = 0
            else:
                n = 0
    elif str(Z) == '<':
        for i in range(len(L2)):
            if int(L2[i]) < V:
                n = n + 1
                if n == X:
                    if str(K) == '=':
                        if int(L2[i + 1]) == G:
                            PLUS = PLUS + 1
                            n = 0
                        else:
                            MINUS = MINUS + 1
                            n = 0
                    elif str(K) == '<':
                        if int(L2[i + 1]) < G:
                            PLUS = PLUS + 1
                            n = 0
                        else:
                            MINUS = MINUS + 1
                            n = 0
                    else:
                        if int(L2[i + 1]) > G:
                            PLUS = PLUS + 1
                            n = 0
                        else:
                            MINUS = MINUS + 1
                            n = 0
            else:
                n = 0
    else:
        for i in range(len(L2)):
            if int(L2[i]) > V:
                n = n + 1
                if n == X:
                    if str(K) == '=':
                        if int(L2[i + 1]) == G:
                            PLUS = PLUS + 1
                            n = 0
                        else:
                            MINUS = MINUS + 1
                            n = 0
                    elif str(K) == '<':
                        if int(L2[i + 1]) < G:
                            PLUS = PLUS + 1
                            n = 0
                        else:
                            MINUS = MINUS + 1
                            n = 0
                    else:
                        if int(L2[i + 1]) > G:
                            PLUS = PLUS + 1
                            n = 0
                        else:
                            MINUS = MINUS + 1
                            n = 0
            else:
                n = 0
    label1['text']='+', ' ', PLUS,'  :  ','-', ' ', MINUS
    print('+', ' ', PLUS)
    print('-', ' ', MINUS)
 
form1=Tk()
form1.title('Калькулятор последовательностей')
form1.config(background='grey')
form1.geometry('490x500')
 
label1=Label(form1,text='Введите последовательность в поле ниже и нажмите кнопку "ЗАГРУЗИТЬ"',bg='lightgreen',width='69')
label1.place(x=1,y=1)
 
text1=Text(form1,width='57',height='10',wrap=WORD)
text1.place(x=2,y=25)
scrollbar = Scrollbar(form1,orient="vertical",command=text1.yview)
scrollbar.place_configure(x=467,y=25,height=164)
text1['yscrollcommand'] = scrollbar.set
 
button1=Button(form1,text='ЗАГРУЗИТЬ',command=Bum1).place(x=5,y=195)
 
label2=Label(form1,text='Условие 1:',bg='coral',width='10').place(x=5,y=230)
label3=Label(form1,text='операция',bg='silver',width='10').place(x=90,y=230)
text2=Text(form1,width='5',height='1')
text2.place(x=170,y=230)
label4=Label(form1,text='число для сравнения',bg='silver',width='20').place(x=220,y=230)
text3=Text(form1,width='5',height='1')
text3.place(x=370,y=230)
button2=Button(form1,text='ПРИНЯТЬ',command=Bum2).place(x=420,y=227)
 
label5=Label(form1,text='Условие 2:',bg='coral',width='10').place(x=5,y=260)
label6=Label(form1,text='операция',bg='silver',width='10').place(x=90,y=260)
text4=Text(form1,width='5',height='1')
text4.place(x=170,y=260)
label7=Label(form1,text='число для сравнения',bg='silver',width='20').place(x=220,y=260)
text5=Text(form1,width='5',height='1')
text5.place(x=370,y=260)
button3=Button(form1,text='ПРИНЯТЬ',command=Bum3).place(x=420,y=257)
 
button4=Button(form1,text='РАССЧИТАТЬ',command=Bum4).place(x=200,y=300)
 
form1.mainloop()
Ошибка:
C:\Python_env\Scripts\python.exe D:/WorkPython/Project02/Project01.2/main.py
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
File "D:/WorkPython/Project02/Project01.2/main.py", line 105, in Bum4
if int(L2[i]) > V:
ValueError: invalid literal for int() with base 10: '\n'

Process finished with exit code 0
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.05.2019, 21:26
Ответы с готовыми решениями:

Почему заголовок виджета показывается ниже чем текст виджета
Создал зону виджетов. Создал шорткод. Шорткод вставляю в текстовый виджет. Заголовок виджета почему-то отображается внизу «тела» виджета....

Как навести мышку на x,y внутри виджета относительно 0,0 виджета (левого верхнего угла виджета)?
Как навести мышку на x,y внутри виджета относительно 0,0 этого виджета (левого верхнего угла виджета)? Или, как получить координаты x,y...

Как взять свойство text у списка?
У меня на форме есть объект типа СПИСОК, такого типа: &lt;SELECT name='seler'&gt; &lt;option value='' SELECTED&gt;&lt;/option&gt; ...

3
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
08.05.2019, 21:42
Цитата Сообщение от Steven_92 Посмотреть сообщение
Суть моей проблемы такова.
Ваш код не соответствует PEP-8 (правилам грамотного code style) ни в одном пункте. Вы хотя бы пробелы поставьте между именами переменных, знаком равно и значением, иначе код просто месиво из символов.

Имена переменных должны быть информативными, иначе код невозможно читать.
Вместо кучи переменных вида text1\text2\text3\text4\able1\label2\lab el3 и прочих - используйте списки, код будет короче и читабельнее.
Вместо использования глобальных переменных - передавайте значения в функцию и возвращайте значения из функции.
Когда вы сумеете сократить код в два раза - вы сами будете понимать, где есть ошибки. Удачи.
1
0 / 0 / 0
Регистрация: 10.01.2017
Сообщений: 16
08.05.2019, 22:02  [ТС]
Garry Galler, Да, я согласен что код написан коряво конечно, я буду работать над правильностью написания. Но я программирую на Python всего пару недель. Пока разбираюсь в тонкостях языка, над красивым написанием буду позже работать. Спасибо за совет.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2083 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
09.05.2019, 13:34
Лучший ответ Сообщение было отмечено Steven_92 как решение

Решение

Цитата Сообщение от Steven_92 Посмотреть сообщение
в конце добавляется ещё знак форматирования \n (перенос строки).
Используйте strip()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2019, 13:34
Помогаю со студенческими работами здесь

Как взять значение из text filed?
Создал pane с text filed в которое вводится значение int. Как считать его оттуда?

Убрать text-shadow у виджета
Скрываю Jivosite на мобильных разрешениях используя display: none, но блок за меняется тем, что на скриншоте. Какие свойства добавить для...

Как взять значение Text из инлайновой кнопки, и добавить ее в переменную
Допустим, есть такой код: import telebot import config from telebot import types txt = Null bot =...

Как взять значение из input text и из него присвоить к java коду
Как взять значение из input text и из него присвоить к java коду хотел бы, чтобы из text1 которые туда вводят, смог получить значение...

Как взять значение из input text и из него присвоить к java коду
Как взять значение из input text и из него присвоить к java коду хотел бы, чтобы из text1 которые туда вводят, смог получить значение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru