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

Поле DateEntry ошибки создания в class

10.07.2022, 17:50. Показов 2181. Ответов 7

Студворк — интернет-сервис помощи студентам
Привет всем, подскажите пожалуйста, создаю GUI интерфейс, программу хочу разместить поля ввода даты и времени
код программы

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
from tkinter import *
from tkinter.ttk import *
import tkinter.ttk as ttk
from tkcalendar import Calendar, DateEntry
 
class Window:
    def __init__(self, width, height, title='Every_day'):
        self.root = Tk()
        self.root.title = title
        self.root.geometry(f"{width}x{height}+5+5")
 
        self.tabs_control = Notebook(self.root)
        self.tab_schedule = Frame(self.tabs_control)
        self.tabs_control.add(self.tab_schedule, text='Расписание совещаний')
        self.tabs_tasks = Frame(self.tabs_control)
        self.tabs_control.add(self.tabs_tasks, text='Задачи (в разработке)')
 
        self.list_columns = ('date_meet', 'time_meet', 'topic_meet', 'name_project',
                             'duration_meet', 'audio_conf_phone_number', 'guest_connection', 'id_guest_meet',
                             'pass_guest_meet', 'link_guest_meet', 'number_rooms', 'demonstration_materials',
                             'other_room', 'name_vks', 'vmr_vks', 'id_meet', 'pass_meet', 'link_meet', 'comment')
        self.table_shedule = ttk.Treeview(self.tab_schedule, columns=self.list_columns, show='headings')
        self.table_shedule.heading('date_meet', text='Дата')
        self.table_shedule.heading('time_meet', text='Время')
        self.table_shedule.heading('topic_meet', text='Тема')
        self.table_shedule.heading('name_project', text='Проект')
        self.table_shedule.heading('duration_meet', text='Прод-сть')
        # self.table_shedule.heading('name_organizer', text='ФИО заказчика')
        # self.table_shedule.heading('organizer_email', text='Эл.почта')
        # self.table_shedule.heading('organizer_tel', text='Телефон')
        self.table_shedule.heading('audio_conf_phone_number', text='Тел. аудио конф.')
        self.table_shedule.heading('guest_connection', text='ip, адрес')
        self.table_shedule.heading('id_guest_meet', text='Идентификатор')
        self.table_shedule.heading('pass_guest_meet', text='Пароль')
        self.table_shedule.heading('link_guest_meet', text='Ссылка')
        self.table_shedule.heading('number_rooms', text='Переговорные')
        self.table_shedule.heading('demonstration_materials', text='Демонстрация')
        self.table_shedule.heading('other_room', text='Др. переговорные')
        self.table_shedule.heading('name_vks', text='Сервер ВКС')
        self.table_shedule.heading('vmr_vks', text='ИД зала')
        self.table_shedule.heading('id_meet', text='ИД конф.')
        self.table_shedule.heading('pass_meet', text='Пароль конф.')
        self.table_shedule.heading('link_meet', text='Ссылка конф.')
        self.table_shedule.heading('comment', text='Комментарий')
 
        self.horscrlbar = ttk.Scrollbar(self.tab_schedule, orient='horizontal', command=self.table_shedule.xview)
        self.table_shedule.configure(xscrollcommand=self.horscrlbar.set)
 
        # self.period = Label(self.tab_schedule, text='Период')
        self.var_date = StringVar()
 
        self.datebefore = DateEntry(self.tab_schedule, width=12, textvariable=self.var_date, date_pattern='dd/mm/yy').pack(side='left')
 
    def draw_widgets(self):
        self.tabs_control.pack(fill=BOTH)
        self.table_shedule.pack(fill=BOTH)
 
    def draw_scrollbar(self):
        self.horscrlbar.pack(side='top', fill=BOTH)
 
    def draw_label(self):
        #self.period.pack(side='left')
        #self.datebefore.pack(side='left')
        pass
 
    def draw_menu(self):
        menu_bar = Menu(self.root)
        file_menu = Menu(menu_bar, tearoff=0)
        file_menu.add_command(label='ком 1')
        file_menu.add_command(label='ком 2')
        file_menu.add_command(label='Выход')
        menu_bar.add_cascade(label='Файл', menu=file_menu)
 
        setting_menu = Menu(menu_bar, tearoff=0)
        setting_menu.add_cascade(label='Параметры 1')
        setting_menu.add_cascade(label='Параметры 2')
        menu_bar.add_cascade(label='Настройки', menu=setting_menu)
 
        help_menu = Menu(menu_bar, tearoff=0)
        help_menu.add_cascade(label='Справка')
        help_menu.add_cascade(label='О программе')
        menu_bar.add_cascade(label='Помощь', menu=help_menu)
 
        self.root.configure(menu=menu_bar)
 
    def run(self):
        self.root.mainloop()
 
 
if __name__ == "__main__":
    window = Window(1000, 500)
    window.draw_widgets()
    window.draw_menu()
    window.draw_scrollbar()
    #window.draw_label()
    window.run()

выдает ошибку:
C:\Users\Жора\PycharmProjects\Projecteve ryday\venv\Scripts\python.exe C:/Users/Жора/PycharmProjects/Projecteveryday/class_list.py
Traceback (most recent call last):
File "C:\Users\Жора\PycharmProjects\Projectev eryday\class_list.py", line 96, in <module>
window = Window(1000, 500)
File "C:\Users\Жора\PycharmProjects\Projectev eryday\class_list.py", line 56, in __init__
txt_date = DateEntry(self.root, width=12, textvariable=self.var_date, date_pattern='dd/mm/yy')
File "C:\Users\Жора\PycharmProjects\Projectev eryday\venv\lib\site-packages\tkcalendar\dateentry.py", line 123, in __init__
self._top_cal = tk.Toplevel(self)
File "C:\Users\Жора\AppData\Local\Programs\Py thon\Python310\lib\tkinter\__init__.py", line 2653, in __init__
self.title(root.title())
TypeError: 'str' object is not callable

Process finished with exit code 1


не могу понять почкму не работает, что должно вызвать 'str' объект.
хотя на пустой форме да и на других GUI поле DateEntry нормально выводится без ошибок, прикрепил файлы в архиве
Вложения
Тип файла: zip 1.zip (4.1 Кб, 5 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.07.2022, 17:50
Ответы с готовыми решениями:

Объяснить причины ошибки "Extra qualification 'CLASS CONSTRUCTOR' and 'CLASS' has incomplete type"
Согласно синтаксису, вроде все правильно, но ошибка... что не так? Ошибки компилятора ниже на рисунке... #include...

Нужен хороший class для создания пагипнатора
Может кто-нибудь с этим сталкивался и нашел себе удобный класс для создания пагинотора, который был бы удобен, универсален и прост в...

Числовое поле. Ошибки в расчетах. Примитивно, но ошибки E-11
База порядка 5 тысяч записей. Принцип простой, есть данные по оплате и расчетные данные сколько должны оплатить. Вычитая одно из другого...

7
0 / 0 / 0
Регистрация: 19.04.2021
Сообщений: 16
10.07.2022, 21:59  [ТС]
Python
1
self.datebefore = DateEntry(self.tab_schedule, width=12, textvariable=self.var_date, date_pattern='dd/mm/yy').pack(side='left')
ругается именно на эту строку, ошибка по номеру строки немного сбился по строкам видимо лишние убрал
0
0 / 0 / 0
Регистрация: 19.04.2021
Сообщений: 16
11.07.2022, 16:53  [ТС]
Python
1
2
3
self.cal = Calendar(self.tab_schedule, font="Arial 14", selectmode='day', locale='en_US',
                            disabledforeground='red',
                            cursor="hand1", year=2018, month=2, day=5)
попытался написать так виджет календаря ошибка та же

попробовал другие виджеты lable и Entry - все нормально ошибок, на форме на вкладке tab_schedule отображается без проблем

python 3.10.5 оф сайта, среда pycharm Build #PC-221.5787.24
0
171 / 111 / 65
Регистрация: 26.06.2020
Сообщений: 328
11.07.2022, 19:58
Лучший ответ Сообщение было отмечено prostofilya как решение

Решение

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
from tkinter import *
from tkinter.ttk import *
import tkinter.ttk as ttk
from tkcalendar import Calendar, DateEntry
 
class Window:
    def __init__(self, width, height, title='Every_day'):
        self.root = Tk()
        self.root.title = title
        self.root.geometry(f"{width}x{height}+5+5")
 
        self.tabs_control = Notebook(root)
 
        self.tab_schedule = Frame(self.tabs_control)
        self.tabs_control.add(self.tab_schedule, text='Расписание совещаний')
        self.tabs_tasks = Frame(self.tabs_control)
        self.tabs_control.add(self.tabs_tasks, text='Задачи (в разработке)')
 
        self.list_columns = ('date_meet', 'time_meet', 'topic_meet', 'name_project',
                             'duration_meet', 'audio_conf_phone_number', 'guest_connection', 'id_guest_meet',
                             'pass_guest_meet', 'link_guest_meet', 'number_rooms', 'demonstration_materials',
                             'other_room', 'name_vks', 'vmr_vks', 'id_meet', 'pass_meet', 'link_meet', 'comment')
        self.table_shedule = ttk.Treeview(self.tab_schedule, columns=self.list_columns, show='headings')
        self.table_shedule.heading('date_meet', text='Дата')
        self.table_shedule.heading('time_meet', text='Время')
        self.table_shedule.heading('topic_meet', text='Тема')
        self.table_shedule.heading('name_project', text='Проект')
        self.table_shedule.heading('duration_meet', text='Прод-сть')
        # self.table_shedule.heading('name_organizer', text='ФИО заказчика')
        # self.table_shedule.heading('organizer_email', text='Эл.почта')
        # self.table_shedule.heading('organizer_tel', text='Телефон')
        self.table_shedule.heading('audio_conf_phone_number', text='Тел. аудио конф.')
        self.table_shedule.heading('guest_connection', text='ip, адрес')
        self.table_shedule.heading('id_guest_meet', text='Идентификатор')
        self.table_shedule.heading('pass_guest_meet', text='Пароль')
        self.table_shedule.heading('link_guest_meet', text='Ссылка')
        self.table_shedule.heading('number_rooms', text='Переговорные')
        self.table_shedule.heading('demonstration_materials', text='Демонстрация')
        self.table_shedule.heading('other_room', text='Др. переговорные')
        self.table_shedule.heading('name_vks', text='Сервер ВКС')
        self.table_shedule.heading('vmr_vks', text='ИД зала')
        self.table_shedule.heading('id_meet', text='ИД конф.')
        self.table_shedule.heading('pass_meet', text='Пароль конф.')
        self.table_shedule.heading('link_meet', text='Ссылка конф.')
        self.table_shedule.heading('comment', text='Комментарий')
 
        self.horscrlbar = ttk.Scrollbar(self.tab_schedule, orient='horizontal', command=self.table_shedule.xview)
        self.table_shedule.configure(xscrollcommand=self.horscrlbar.set)
 
        # self.period = Label(self.tab_schedule, text='Период')
        self.var_date = StringVar()
 
        self.datebefore = DateEntry(self.tab_schedule, width=12, textvariable=self.var_date, date_pattern='dd/mm/yy')
        self.datebefore.pack(side='left')
 
    def draw_widgets(self):
        self.tabs_control.pack(fill=BOTH)
        self.table_shedule.pack(fill=BOTH)
 
    def draw_scrollbar(self):
        self.horscrlbar.pack(side='top', fill=BOTH)
 
    def draw_label(self):
        #self.period.pack(side='left')
        #self.datebefore.pack(side='left')
        pass
 
    def draw_menu(self):
        menu_bar = Menu(self.root)
        file_menu = Menu(menu_bar, tearoff=0)
        file_menu.add_command(label='ком 1')
        file_menu.add_command(label='ком 2')
        file_menu.add_command(label='Выход')
        menu_bar.add_cascade(label='Файл', menu=file_menu)
 
        setting_menu = Menu(menu_bar, tearoff=0)
        setting_menu.add_cascade(label='Параметры 1')
        setting_menu.add_cascade(label='Параметры 2')
        menu_bar.add_cascade(label='Настройки', menu=setting_menu)
 
        help_menu = Menu(menu_bar, tearoff=0)
        help_menu.add_cascade(label='Справка')
        help_menu.add_cascade(label='О программе')
        menu_bar.add_cascade(label='Помощь', menu=help_menu)
 
        self.root.configure(menu=menu_bar)
 
    def run(self):
        self.root.mainloop()
 
 
if __name__ == "__main__":
    root = Tk()
    window = Window(1000, 500)
    window.draw_widgets()
    window.draw_menu()
    window.draw_scrollbar()
    #window.draw_label()
    window.run()
1
0 / 0 / 0
Регистрация: 19.04.2021
Сообщений: 16
11.07.2022, 23:32  [ТС]
то есть слишком много на главном окне нарисовано получается? когда запускаешь работает, но появляется 2 окна одно root, другое уже с Frame где вкладки, а яхотел на одном это отобразить

Добавлено через 2 минуты
может лучше тогда все располагать на Notebook как root? а Frame уже на нем и рисовать все остальное?

Добавлено через 3 часа 21 минуту
Цитата Сообщение от prostofilya Посмотреть сообщение
может лучше тогда все располагать на Notebook как root? а Frame уже на нем и рисовать все остальное?
бред написал)) уже попробовал не получилось
0
171 / 111 / 65
Регистрация: 26.06.2020
Сообщений: 328
12.07.2022, 13:52
Лучший ответ Сообщение было отмечено prostofilya как решение

Решение

Цитата Сообщение от prostofilya Посмотреть сообщение
но появляется 2 окна одно root, другое уже с Frame где вкладки, а яхотел на одном это отобразить
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
from tkinter import *
from tkinter.ttk import *
import tkinter.ttk as ttk
from tkcalendar import Calendar, DateEntry
 
class Window:
    def __init__(self, width, height, title='Every_day'):
        self.root = Tk()
        #self.root.title = title
        self.root.geometry(f"{width}x{height}+5+5")
 
        self.tabs_control = Notebook(self.root)
        self.tab_schedule = Frame(self.tabs_control)
        self.tabs_control.add(self.tab_schedule, text='Расписание совещаний')
        self.tabs_tasks = Frame(self.tabs_control)
        self.tabs_control.add(self.tabs_tasks, text='Задачи (в разработке)')
 
        self.list_columns = ('date_meet', 'time_meet', 'topic_meet', 'name_project',
                             'duration_meet', 'audio_conf_phone_number', 'guest_connection', 'id_guest_meet',
                             'pass_guest_meet', 'link_guest_meet', 'number_rooms', 'demonstration_materials',
                             'other_room', 'name_vks', 'vmr_vks', 'id_meet', 'pass_meet', 'link_meet', 'comment')
        self.table_shedule = ttk.Treeview(self.tab_schedule, columns=self.list_columns, show='headings')
        self.table_shedule.heading('date_meet', text='Дата')
        self.table_shedule.heading('time_meet', text='Время')
        self.table_shedule.heading('topic_meet', text='Тема')
        self.table_shedule.heading('name_project', text='Проект')
        self.table_shedule.heading('duration_meet', text='Прод-сть')
        # self.table_shedule.heading('name_organizer', text='ФИО заказчика')
        # self.table_shedule.heading('organizer_email', text='Эл.почта')
        # self.table_shedule.heading('organizer_tel', text='Телефон')
        self.table_shedule.heading('audio_conf_phone_number', text='Тел. аудио конф.')
        self.table_shedule.heading('guest_connection', text='ip, адрес')
        self.table_shedule.heading('id_guest_meet', text='Идентификатор')
        self.table_shedule.heading('pass_guest_meet', text='Пароль')
        self.table_shedule.heading('link_guest_meet', text='Ссылка')
        self.table_shedule.heading('number_rooms', text='Переговорные')
        self.table_shedule.heading('demonstration_materials', text='Демонстрация')
        self.table_shedule.heading('other_room', text='Др. переговорные')
        self.table_shedule.heading('name_vks', text='Сервер ВКС')
        self.table_shedule.heading('vmr_vks', text='ИД зала')
        self.table_shedule.heading('id_meet', text='ИД конф.')
        self.table_shedule.heading('pass_meet', text='Пароль конф.')
        self.table_shedule.heading('link_meet', text='Ссылка конф.')
        self.table_shedule.heading('comment', text='Комментарий')
 
        self.horscrlbar = ttk.Scrollbar(self.tab_schedule, orient='horizontal', command=self.table_shedule.xview)
        self.table_shedule.configure(xscrollcommand=self.horscrlbar.set)
 
        # self.period = Label(self.tab_schedule, text='Период')
        self.var_date = StringVar()
 
        self.datebefore = DateEntry(self.tab_schedule, width=12, textvariable=self.var_date, date_pattern='dd/mm/yy')
        self.datebefore.pack(side='left')
 
    def draw_widgets(self):
        self.tabs_control.pack(fill=BOTH)
        self.table_shedule.pack(fill=BOTH)
 
    def draw_scrollbar(self):
        self.horscrlbar.pack(side='top', fill=BOTH)
 
    def draw_label(self):
        #self.period.pack(side='left')
        #self.datebefore.pack(side='left')
        pass
 
    def draw_menu(self):
        menu_bar = Menu(self.root)
        file_menu = Menu(menu_bar, tearoff=0)
        file_menu.add_command(label='ком 1')
        file_menu.add_command(label='ком 2')
        file_menu.add_command(label='Выход')
        menu_bar.add_cascade(label='Файл', menu=file_menu)
 
        setting_menu = Menu(menu_bar, tearoff=0)
        setting_menu.add_cascade(label='Параметры 1')
        setting_menu.add_cascade(label='Параметры 2')
        menu_bar.add_cascade(label='Настройки', menu=setting_menu)
 
        help_menu = Menu(menu_bar, tearoff=0)
        help_menu.add_cascade(label='Справка')
        help_menu.add_cascade(label='О программе')
        menu_bar.add_cascade(label='Помощь', menu=help_menu)
 
        self.root.configure(menu=menu_bar)
 
    def run(self):
        self.root.mainloop()
 
 
if __name__ == "__main__":
    window = Window(1000, 500)
    window.draw_widgets()
    window.draw_menu()
    window.draw_scrollbar()
    #window.draw_label()
    window.run()
1
0 / 0 / 0
Регистрация: 19.04.2021
Сообщений: 16
12.07.2022, 14:21  [ТС]
Извините за мою наглость, но я так и не понял эту магию со строкой во втором варианте

# self.root.title = title

и в первом варианте

self.tabs_control = Notebook(root)

но спасибо в любом случае
0
171 / 111 / 65
Регистрация: 26.06.2020
Сообщений: 328
12.07.2022, 16:13
Цитата Сообщение от prostofilya Посмотреть сообщение
но я так и не понял эту магию со строкой во втором варианте
Я тоже.

Добавлено через 1 час 41 минуту
Цитата Сообщение от prostofilya Посмотреть сообщение
self.root.title = title
Python
1
self.root.title(title)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2022, 16:13
Помогаю со студенческими работами здесь

Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int')
Есть такие строки: std::list&lt;c_bullet*&gt; Bullets; ... for(auto i = Bullets.begin(); i != Bullets.end(); /**/) В строке цикла вот...

Как передать pk в поле формы class view
Доброго времени суток! Прошу помощи. Есть модель: class Forfeit(models.Model): ff_worker =...

Решение ошибки Target class does not exist
Приветствую! Столкнулся с проблемой - ошибка Target class does not exist. Нашёл в источниках, что это характерно для Laravel8, если...

Перевод переменной из class A в другой class B с последующим переходом в class C
Доброе время суток. Прошу помочь ввиду нехватка опыта и мозгов( Есть задачка. Посчитать факториал числа. По схеме MVP. Что это...

Ошибки в коде - Expected class, delegate, enum, interface, or struct
С с# не знаком, полез на msdn.microsoft.com насчет ошибок, тоже не очень понятно. насчет cs1513 вообще не понятно, вроде есть закрывающая...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru