С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 9

Как записать строку из поля ввода в текстовый фаил?

12.12.2013, 17:55. Показов 5231. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, мне необходима запись данных из строки ввода в txt фаил, подскажите как это реализовать, если можно на прямом примере.
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
# *- coding: utf-8 -*-
from math import *
from Tkinter import *
 
root = Tk()             
root.title("Проведение тестирования")  
frame = Frame(root)
frame.pack()
 
 
def login():
    u=open("start.txt", "w")
    p=p.write(u)
    
    
    
    print u
    
 
def test():
    import ideal  
 
 
tabel1 = Label(frame, text="Пользователь", font='arial 14')
tabel1.grid(row=1, column=1)
 
u_entry = Entry(frame, width=35, text=" ")
u_entry.grid(row=2, column=1, padx=5)
 
eval_button = Button(frame,bg='light Blue', text="Загрузить тест", width=15,height=1,command=test)
eval_button.grid(row=1, column=3, pady=10, padx=10)
 
eval_button = Button(frame,bg='light Blue', text="Ок", width=10,height=1,command=login)
eval_button.grid(row=2, column=2, pady=15, padx=15)
 
exit_button = Button(frame, bg='pink', text="Выход", width=10,command=root.destroy)
exit_button.grid(row=2, column=3, padx=10, pady=10)
 
root.mainloop()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2013, 17:55
Ответы с готовыми решениями:

VueJS и springMVC. Как записать данные из поля ввода в БД?
Здравствуйте. Есть такой фрагмент html кода, написанного на vueJS: <div id="app"> <el-input placeholder="Введите...

Как строку-результат записать в текстовый файл (jscript)
Подскажите, пожалуйста, как результат работы программы (строка) записать в jscript в нужный мне текстовый файл? Буду благодарна за ответ!...

Как из Memo считать строку и записать её в текстовый документ
Имеется Memo, в котором сформирован список из текстовых строк. Количество строк может меняться, в зависимости от вычислений программы. Как...

17
Z3JheSBoYXQ=
 Аватар для fanatdebian
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
12.12.2013, 19:37
Python
1
2
3
4
5
6
7
8
9
10
11
12
def checked():
  value=u_entry.get()
  print value
  with open('outuser', 'a+') as outf:
    outf.write(value+'\n')
 
 
u_entry = Entry(frame, width=35, text=" ")
u_entry.grid(row=2, column=1, padx=5)
 
eval_button = Button(frame,bg='light Blue', text="Ок", width=10,height=1,command=checked)
eval_button.grid(row=2, column=2, pady=15, padx=15)
для получения содержимого Entry, используешь метод сего виджета - .get. Это значение получаешь в функции-обработчике нажатие кнопки и там же производишь нужные тебе действия над содержимым. Записываешь ли в файл, выводишь в консоль, удаляешь - все в твоей власти
2
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 9
12.12.2013, 20:12  [ТС]
Я ведь всё верно сделал?

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
# *- coding: utf-8 -*-
from math import *
from Tkinter import *
 
root = Tk()             
root.title("Проведение тестирования")  
frame = Frame(root)
frame.pack()
 
 
def checked():
  value=u_entry.get()
  print value
  with open('outuser.txt', 'a+') as outf:
    outf.write(value+'\n')
 
 
def test():
    import ideal  
 
 
tabel1 = Label(frame, text="Пользователь", font='arial 14')
tabel1.grid(row=1, column=1)
 
u_entry = Entry(frame, width=35, text=" ")
u_entry.grid(row=2, column=1, padx=5)
 
eval_button = Button(frame,bg='light Blue', text="Загрузить тест", width=15,height=1,command=test)
eval_button.grid(row=1, column=3, pady=10, padx=10)
 
eval_button = Button(frame,bg='light Blue', text="Ок", width=10,height=1,command=checked)
eval_button.grid(row=2, column=2, pady=15, padx=15)
    
 
exit_button = Button(frame, bg='pink', text="Выход", width=10,command=root.destroy)
exit_button.grid(row=2, column=3, padx=10, pady=10)
 
root.mainloop()


Проблема к сожалению не решилась. Выдает ошибку:

Python
1
2
3
4
5
6
7
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
    return self.func(*args)
  File "C:\Users\Toshiba\Desktopурсовая работа алг\Okno zapuska - копия - копия.py", line 15, in checked
    outf.write(value+'\n')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
0
Z3JheSBoYXQ=
 Аватар для fanatdebian
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
12.12.2013, 20:22
Python
1
2
3
4
5
def checked():
  value=u_entry.get()
  print value
  with open('outuser', 'a+') as outf:
    outf.write(value.decode('utf-8').encode('cp1251')+'\n')
попробуй
0
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 9
12.12.2013, 20:24  [ТС]
К сожалению

Python
1
2
3
4
5
6
7
8
9
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python26\lib\lib-tk\Tkinter.py", line 1410, in __call__
    return self.func(*args)
  File "C:\Users\Toshiba\Desktopурсовая работа алг\Okno zapuska - копия - копия.py", line 15, in checked
    outf.write(value.decode('utf-8').encode('cp1251')+'\n')
  File "C:\Python26\lib\encodings\utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.12.2013, 21:23
сверху запиши
Python
1
# coding: cp1251
сам исходник перекодируй в эту же кодировку (если это нужно)
1
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 9
12.12.2013, 21:28  [ТС]
Проблема не решилась
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.12.2013, 21:32
Цитата Сообщение от wilny Посмотреть сообщение
Python
1
outf.write(value.decode('utf-8').encode('cp1251')+'\n')
файл с этой строкой сюда скопируй
0
Z3JheSBoYXQ=
 Аватар для fanatdebian
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
13.12.2013, 12:27
Python
1
2
3
4
5
6
7
8
def checked():
  value=u_entry.get()
  if isinstance(value, unicode):
    value = value.encode('utf-8')
  elif isinstance(value, str):
    value = value.decode('utf-8')
  with open('outuser', 'a+') as outf:
    outf.write(value+'\n')
1
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 9
13.12.2013, 21:44  [ТС]
Спасибо, всё отлично работает)

Добавлено через 34 минуты
К сожалению, возник новый вопрос. Как из одной функции def сохранить значение, к примеру p и использовать его уже в другом дэфе.


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#-Десятый вопрос 
    
    z = float(z_entry.get())
    if z==20: 
        tabel1 = Label(frame, text=" верно ",bg='green', font='arial 14')
        tabel1.grid(row=8, column=3)
        p=p+1
        
    if z!=20:
        tabel1 = Label(frame, text="ошибка",bg='red', font='arial 14')
        tabel1.grid(row=8, column=3)
 
 
 
#Подсчёт правильных
    for i in range(1,10):
        p_label.configure(text=("Результат",p,"/10"))
 
        if p>=0:
            tabel2 = Label(frame, text="Оценка:", font='arial 14')
            tabel2.grid(row=6, column=2)
Для ясности картины, я хочу произвести печать p (результат) в текстовый файл, упоминаемый выше.
0
Z3JheSBoYXQ=
 Аватар для fanatdebian
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
14.12.2013, 11:58
Два оптимальных варианта, если общее пространство имен, то через глобальную переменную

Python
1
2
3
4
5
6
7
8
9
10
11
12
some = 0
 
def hello(value):
   global some
   some+=value
 
def hello2(value):
    global some
    some+=value
 
hello(1)   # some  = 1
hello2(5) # some =  6
либо через класс, засчет self, создаем общность пространства для методов и переменных класса.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
class some:
  def __init__(self):
    self.some = 0
 
  def hello(self, value):
    self.some+=value
  def hello2(self,value):
    self.some+=value
    
s=some()
s.hello(1)  # s.some = 1
s.hello2(5) # s.some = 6
print s.some # == 6
1
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 9
15.12.2013, 16:36  [ТС]
Я совсем нуб.. можно уточку подробнее? На данном этапе, я имею

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
from math import *
from Tkinter import *
 
 
# Создание окна
root = Tk()             
root.title("Тест 1")
frame = Frame(root)
frame.pack()
 
 
 
def zzz():
    p=0
 
 
 
    a = float(a_entry.get())
    if a==2: 
        tabel1 = Label(frame, text=" верно ",bg='green', font='arial 14')
        tabel1.grid(row=2, column=1)
        p=p+1
 
    if a!=2:
        tabel1 = Label(frame, text="ошибка",bg='red', font='arial 14')
        tabel1.grid(row=2, column=1)
 
 
 
    s = float(s_entry.get())
    if s==4: 
        tabel1 = Label(frame, text=" верно ",bg='green', font='arial 14')
        tabel1.grid(row=2, column=2)
        p=p+1
        
    if s!=4:
        tabel1 = Label(frame, text="ошибка",bg='red', font='arial 14')
        tabel1.grid(row=2, column=2)
 
    print p
 
#--Вопрос 1
tabel1 = Label(frame, text="1+1", font='arial 14')
tabel1.grid(row=1, column=1)
 
#--Строка ввода 1
a_entry = Entry(frame,width=35)
a_entry.grid(row=3, column=1)
 
#--Вопрос 2
tabel1 = Label(frame, text="2+2", font='arial 14')
tabel1.grid(row=1, column=2)
 
#--Строка ввода 2
s_entry = Entry(frame, width=35)
s_entry.grid(row=3, column=2)
 
 
eval_button = Button(frame, text="Ответить", width=30, bg="light blue", command=zzz)
eval_button.grid(row=13, column=1)
 
 
root.mainloop()
К примеру, я хочу воспользоваться первым способом. Что мне необходимо?
def zzz будет первой функцией. В нём я найду p. А дальше уже во втором def, допустим def xxx я должен организовать печать имеющегося p в txt файл.
0
Z3JheSBoYXQ=
 Аватар для fanatdebian
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
15.12.2013, 17:06
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
#!/usr/bin/env python
#coding: utf-8
 
from math import *
from Tkinter import *
 
 
 
def zzz():
  try:
    if a_entry.get():
      if int(a_entry.get()) == 2:
        print "Bingo u rigth"
      else:
        print "Error u slacker"
  except:
    a_entry.delete(0, END)
 
  try:
    if s_entry.get():
      if int(s_entry.get()) == 4:
        print "Bingo u rigth"
      else:
        print "Error u slacker"
  except:
    s_entry.delete(0, END)
# тут же можешь реализовывать запись в файл и прочие
# нужные тебе действия
# обработчки общий для двух виджетов Entry
 
 
 
# Создание окна
root = Tk()
root.title("Тест 1")
root.geometry("500x100")
frame = Frame(root)
frame.pack()
#--Вопрос 1
tabel1 = Label(frame, text="1+1", font='arial 14')
tabel1.grid(row=1, column=1)
 
#--Строка ввода 1
a_entry = Entry(frame,width=35)
a_entry.grid(row=3, column=1)
 
#--Вопрос 2
tabel1 = Label(frame, text="2+2", font='arial 14')
tabel1.grid(row=1, column=2)
 
#--Строка ввода 2
s_entry = Entry(frame, width=35)
s_entry.grid(row=3, column=2)
 
 
eval_button = Button(frame, text="Ответить", width=30, bg="light blue", command=zzz)
eval_button.grid(row=13, column=1)
 
 
root.mainloop()

Дай описание задания. Легче самому реализовать и на примере объяснить что, зачем и почему.
0
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 9
15.12.2013, 17:51  [ТС]
Необходимо создать программу для проведения тестирования. На данный момент, у меня есть окон с запуском теста и вводом пользователя (записывается в txt) и 10 вопросов, хочу чтобы результат этого тестирования также забивался в тот же txt. К сожалению запас операторов у меня слишком мал а заботу нужно защищать.
0
Z3JheSBoYXQ=
 Аватар для fanatdebian
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
16.12.2013, 23:08
Цитата Сообщение от wilny Посмотреть сообщение
Необходимо создать программу для проведения тестирования. На данный момент, у меня есть окон с запуском теста и вводом пользователя (записывается в txt) и 10 вопросов, хочу чтобы результат этого тестирования также забивался в тот же txt. К сожалению запас операторов у меня слишком мал а заботу нужно защищать.
Условие задание не полное. Откуда берутся данные о пользователе? Как сохранять, в произвольном формате или нет, откуда брать вопросы? Считывать из файла, или уже должны быть заложены в логике программы? Дай мне текст задания. Полностью
Если нет, то на вот эту поделку, посмотри поможет отчасти - я показал, как забирать сведения из текстовых полей, вычислять успешность операции и уведомление в нижней метке о результате операции.

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
#!/usr/bin/env python
#coding: utf-8
 
from math import *
from Tkinter import *
 
 
 
def zzz():
  try:
    if a_entry.get():
      if int(a_entry.get()) == 2:
        status.config(fg="green", text="Bingo u RIGHT")
      else:
        status.config(fg="red", text="Error u slacker")
 
  except:
    a_entry.delete(0, END)
 
  try:
    if s_entry.get():
      if int(s_entry.get()) == 4:
        status.config(fg="green", text="Bingo u RIGHT")
      else:
        status.config(fg="red", text="Error u slacker")
 
  except:
    s_entry.delete(0, END)
# тут же можешь реализовывать запись в файл и прочие
# нужные тебе действия
# обработчки общий для двух виджетов Entry
 
def a_foutclear(event):
  status.config(text="")
  a_entry.delete(0, END)
 
def s_foutclear(event):
  status.config(text="")
  s_entry.delete(0, END)
 
 
# Создание окна
root = Tk()
root.title("Тест 1")
root.geometry("500x100")
frame = Frame(root)
frame.pack()
#--Вопрос 1
tabel1 = Label(frame, text="1+1", font='arial 14')
tabel1.grid(row=1, column=1)
 
#--Строка ввода 1
a_entry = Entry(frame,width=35)
a_entry.grid(row=3, column=1)
a_entry.bind('<FocusOut>', a_foutclear)
 
#--Вопрос 2
tabel1 = Label(frame, text="2+2", font='arial 14')
tabel1.grid(row=1, column=2)
 
#--Строка ввода 2
s_entry = Entry(frame, width=35)
s_entry.grid(row=3, column=2)
s_entry.bind('<FocusOut>', s_foutclear)
 
 
eval_button = Button(frame, text="Ответить", width=30, bg="light blue", command=zzz)
eval_button.grid(row=13, column=1)
 
status = Label(root)
status.config(bg="grey", width=15)
status.pack(expand=YES, fill=BOTH)
 
root.mainloop()
1
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 9
17.12.2013, 23:36  [ТС]
Условий, на самом деле, больше нет.
Спасибо большое за помощь.

Но я должен защищать работу. Не могли бы вы подсказать, как работает пару моментов?

Python
1
2
3
4
5
6
7
8
9
10
11
  try:
    if a_entry.get():
      if int(a_entry.get()) == 2:
        tabel1 = Label(frame, text="1+1", font='arial 14', fg='green')
        tabel1.grid(row=1, column=1)
        p=p+1
      else:
        tabel1 = Label(frame, text="1+1", font='arial 14', fg='red')
        tabel1.grid(row=1, column=1)
  except:
   a_entry.delete(0, END)
Я правильно понимаю, что на данном этапе....
-int необходим, чтобы программа понимала, что а - это число?
-и в принципе, действие происходит так, что если a не равно 2, то выполняется
Python
1
tabel1 = Label(frame, text="1+1", font='arial 14', fg='red')
-
Python
1
a_entry.delete(0, END)
закрывает этот процесс, что в отличии от изначального кода, даёт возможность пропустить вопрос


И к сожалению, осуществить запись в txt файл я так и не смог (
0
Z3JheSBoYXQ=
 Аватар для fanatdebian
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
18.12.2013, 00:50
Цитата Сообщение от wilny Посмотреть сообщение
Условий, на самом деле, больше нет.
Спасибо большое за помощь.

Но я должен защищать работу. Не могли бы вы подсказать, как работает пару моментов?

Python
1
2
3
4
5
6
7
8
9
10
11
  try:
    if a_entry.get():
      if int(a_entry.get()) == 2:
        tabel1 = Label(frame, text="1+1", font='arial 14', fg='green')
        tabel1.grid(row=1, column=1)
        p=p+1
      else:
        tabel1 = Label(frame, text="1+1", font='arial 14', fg='red')
        tabel1.grid(row=1, column=1)
  except:
   a_entry.delete(0, END)

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
  
try:   # включаем перехват исключений 
    if a_entry.get(): # если в поле ввода a_entry что-то есть тогда
      if int(a_entry.get()) == 2:  # если эта переменная является целочисленным объектом, тогда приведение типа str->int не вызовет 
                                                 # возникновение исключений, а если будет НЕ Число тогда ход программы переходит к позиции 2
        tabel1 = Label(frame, text="1+1", font='arial 14', fg='green')   
        tabel1.grid(row=1, column=1)
        p=p+1
      else:                
        tabel1 = Label(frame, text="1+1", font='arial 14', fg='red')
        tabel1.grid(row=1, column=1)
  except:    #                    позиция 2
   a_entry.delete(0, END)   # очищаем поле от начала до конца от неверного значения в виде строковых данных
1
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 9
20.12.2013, 13:54  [ТС]
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.12.2013, 13:54
Помогаю со студенческими работами здесь

Как записать в текстовый файл значения в строку через пробел?
надо записать в текстовый файл 3 значения через пробел P.S. еще хотелось бы узнать как сложить между собой все числа находящиеся в var

Как записать 3 числа в одну строку в текстовый файл. Записывается в 3 строки
Помогите найти строку которая записывает в файле в новую строку, мне необходимо записывать в одну строку, а записывает в 3 строки ...

Как извлечь из XLS-файла заданную строку и записать её в текстовый документ?
доброе утра, есть строчка http://anicon.sknt.ru/1.html возможно как то ее вынуть в текстовый документ?

Упорядочить строку по возрастанию, записать в новый текстовый файл новую строку цифр
Создать текстовый файл,который имеет в себе строку цифр.Упорядочить строку по возрастанию,записать в новый текстовый файл новую строку цифр.

Как записать две строки поля одной таблицы в одну строку другой?
Есть такой запрос к БД и результат этого запроса две строки ROH и KOR поля FIL С 6 строки результат запроса заполняется в kbmMemTable1...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru