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

Checkbutton во Frame не работает

14.09.2020, 20:20. Показов 2188. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я новичок и пишу на PyCharm 2017.1 интерпритатор PYTHON 3.8.6rc1
Облазил, как мне кажется весь интернет, но решение проблемы не нашел. Проблема в том, что Checkbutton во Frame не работает, если не во 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
from tkinter import *
 
window = Tk()
 
isRIP = IntVar()
 
def clickadd():
    Add_vindow = Tk()
    Add_vindow.title("Добавление нового члена семьи")
    Add_vindow.geometry('600x450+400+300')
 
    frame1 = Frame(relief=SUNKEN, master=Add_vindow, width=200, height=100)#, bg="red")
 
    lbl = Label(frame1, text="Фамилия", font=("Arial Bold", 14))
    lbl.grid(column=0, row=0, sticky="e")
    txt_fam = Entry(frame1, width=25, font=("Arial Bold", 14))
    txt_fam.grid(column=1, row=0)
 
    lbl = Label(frame1, text="Имя", font=("Arial Bold", 14))
    lbl.grid(column=0, row=1, sticky="e")
    txt_name = Entry(frame1, width=25, font=("Arial Bold", 14))
    txt_name.grid(column=1, row=1)
 
    lbl = Label(frame1, text="Отчество", font=("Arial Bold", 14))
    lbl.grid(column=0, row=2, sticky="e")
    txt_secname = Entry(frame1, width=25, font=("Arial Bold", 14))
    txt_secname.grid(column=1, row=2)
 
    lbl = Label(frame1, text="Дата рождения", font=("Arial Bold", 14))
    lbl.grid(column=0, row=3, sticky="e")
    txt_datebith = Entry(frame1, width=25, font=("Arial Bold", 14))
    txt_datebith.grid(column=1, row=3)
 
    def fun(event):
        st = event.char
        #print("Нажата клавиша " + event.char)
        f= len(txt_datebith.get())
 
        if f<9:
            if f == 2:
                txt_datebith.insert(2, ".")
 
            elif f == 5:
                txt_datebith.insert(5, ".")
        else:
            txt_datebith.delete(10)
 
    dat = txt_datebith.get()
 
    txt_datebith.bind("<KeyRelease>", fun)
 
    lbl1 = Label(frame1, text="Место проживания", font=("Arial Bold", 14), wraplength=110)
    lbl1.grid(column=0, row=4, sticky="e")
    txt_live = Text(frame1, width=25, height=2, font=("Arial Bold", 14))
    txt_live.grid(column=1, row=4)
 
# Вот тут не работает
    def select_RIP():
        Add_vindow.title(str(isRIP.get()))
        # if isRIP.get():
        #     Add_vindow.title("Флажки")
        # else:
        #     Add_vindow.title("a")
 
    Check_B_RIP = Checkbutton(frame1, text='R.I.P',  variable=isRIP, command=select_RIP)
    Check_B_RIP.grid(column=0, row=6, sticky="W")
 
    frame1.pack(fill=Y, side=LEFT)
 
    frame2 = Frame(master=Add_vindow, width=100, bg="yellow")
    frame2.pack(fill=Y, side=LEFT)
 
    window.destroy()
    window.quit()
    Add_vindow.mainloop()
 
def clickupdate():
    lbl.configure(text="Я же ...")
 
window.title("Семейное древо")
window.geometry('400x250+400+300')
menu = Menu(window)
new_item = Menu(menu, tearoff=0)
new_item.add_command(label='Добавить нового члена семьи', command=clickadd)
new_item.add_separator()
new_item.add_command(label='Изменить данные члена семьи', command=clickupdate)
menu.add_cascade(label='Файл', menu=new_item)
window.config(menu=menu)
 
lbl = Label(window, text="Ф", font=("Arial Bold", 14))
lbl.grid(column=0, row=0)
 
window.mainloop()
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.09.2020, 20:20
Ответы с готовыми решениями:

Не работает Frame
Доброго времени суток! У меня возникла проблема: не работает Frame. Создаю в главном окне фрейм и кнопку, при нажатии которой должен...

Не работает Frame.Navigate()
Всем привет! У меня есть метод ShowPage(), вот его код: public void ShowPage(string page) { Main main = new Main(); ...

Сделать поиск в одном frame, а результат поиска показать на другом frame
Добры день. Затеял я поиск на своём сайте. Дело в том что проект у меня frame и мне надо сделать поиск в одном frame(верхнем frame) а...

3
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,656
15.09.2020, 16:41
Если очень просто, ваша переменная isRIP привязана к window, вы прибиваете window, а потом пытаетесь общаться с isRIP уже из другой "инстанции". Можно строки 73-74 window.destroy() window.quit()
поместить до строки 8, а также строку isRIP = IntVar() перенести после строки 8, но это такое себе решение.
0
0 / 0 / 0
Регистрация: 17.02.2017
Сообщений: 4
16.09.2020, 20:47  [ТС]
Я так сделал, но не помогло.
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,656
17.09.2020, 08:38
Лучший ответ Сообщение было отмечено Alex-Gurza как решение

Решение

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
from tkinter import *
 
window = Tk()
 
def clickadd():
    window.destroy()
    window.quit()
    Add_vindow = Tk()
    isRIP = IntVar()
    Add_vindow.title("Добавление нового члена семьи")
    Add_vindow.geometry('600x450+400+300')
 
    frame1 = Frame(relief=SUNKEN, master=Add_vindow, width=200, height=100)#, bg="red")
 
    lbl = Label(frame1, text="Фамилия", font=("Arial Bold", 14))
    lbl.grid(column=0, row=0, sticky="e")
    txt_fam = Entry(frame1, width=25, font=("Arial Bold", 14))
    txt_fam.grid(column=1, row=0)
 
    lbl = Label(frame1, text="Имя", font=("Arial Bold", 14))
    lbl.grid(column=0, row=1, sticky="e")
    txt_name = Entry(frame1, width=25, font=("Arial Bold", 14))
    txt_name.grid(column=1, row=1)
 
    lbl = Label(frame1, text="Отчество", font=("Arial Bold", 14))
    lbl.grid(column=0, row=2, sticky="e")
    txt_secname = Entry(frame1, width=25, font=("Arial Bold", 14))
    txt_secname.grid(column=1, row=2)
 
    lbl = Label(frame1, text="Дата рождения", font=("Arial Bold", 14))
    lbl.grid(column=0, row=3, sticky="e")
    txt_datebith = Entry(frame1, width=25, font=("Arial Bold", 14))
    txt_datebith.grid(column=1, row=3)
 
    def fun(event):
        st = event.char
        #print("Нажата клавиша " + event.char)
        f= len(txt_datebith.get())
 
        if f<9:
            if f == 2:
                txt_datebith.insert(2, ".")
 
            elif f == 5:
                txt_datebith.insert(5, ".")
        else:
            txt_datebith.delete(10)
 
    dat = txt_datebith.get()
 
    txt_datebith.bind("<KeyRelease>", fun)
 
    lbl1 = Label(frame1, text="Место проживания", font=("Arial Bold", 14), wraplength=110)
    lbl1.grid(column=0, row=4, sticky="e")
    txt_live = Text(frame1, width=25, height=2, font=("Arial Bold", 14))
    txt_live.grid(column=1, row=4)
 
# теперь работает :)
    def select_RIP():
        Add_vindow.title(str(isRIP.get()))
        # if isRIP.get():
        #     Add_vindow.title("Флажки")
        # else:
        #     Add_vindow.title("a")
 
    Check_B_RIP = Checkbutton(frame1, text='R.I.P',  variable=isRIP, command=select_RIP)
    Check_B_RIP.grid(column=0, row=6, sticky="W")
 
    frame1.pack(fill=Y, side=LEFT)
 
    frame2 = Frame(master=Add_vindow, width=100, bg="yellow")
    frame2.pack(fill=Y, side=LEFT)
 
    Add_vindow.mainloop()
 
def clickupdate():
    lbl.configure(text="Я же ...")
 
window.title("Семейное древо")
window.geometry('400x250+400+300')
menu = Menu(window)
new_item = Menu(menu, tearoff=0)
new_item.add_command(label='Добавить нового члена семьи', command=clickadd)
new_item.add_separator()
new_item.add_command(label='Изменить данные члена семьи', command=clickupdate)
menu.add_cascade(label='Файл', menu=new_item)
window.config(menu=menu)
 
lbl = Label(window, text="Ф", font=("Arial Bold", 14))
lbl.grid(column=0, row=0)
 
window.mainloop()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.09.2020, 08:38
Помогаю со студенческими работами здесь

Как программно добавить Frame в другой существующий на форме frame?
Делаю это так: На форме лежит Frame1. на инициализации формы.... Dim mFrame As Object

Websocket frame: Как правильно построить frame byte array?
Доброго дня. Пытаюсь написать свою имплементацию Websocket, но застрял на построении frame. Вот структура frame согласно спецификации...

Передача информации из одного Frame в другой Frame
Здравствуйте! У меня следующий вопрос: На окне есть первый Frame в котором несколько страниц. На одной из страниц первого Frame, а...

Обновление данных на Frame из другого Frame
Помогите реализовать: есть MainFrame и SettingsFrame. Нужно что бы при нажатии Button на SettingsFrame обновилась (перерисовалась) таблица...

In a frame because it set 'X-Frame-Options' to 'SAMEORIGIN
http://rghost.ru/7hxl2VcQS.view Как ето исправить?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru