Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 26.02.2018
Сообщений: 14
1

Что не так с переменной?

06.07.2020, 18:33. Показов 1141. Ответов 3

Author24 — интернет-сервис помощи студентам
Не могу понять.
Выбираю элемент например первого индекса из ComboBox и записываю его индекс в переменную "currentDrum", после при нажатии на CheckBox вывожу индекс переменной из "currentDrum" в интерпретатор и почему-то после этого выводится "0" а не индекс выбранного элемента.

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
from tkinter import *
from tkinter.ttk import Combobox, Checkbutton
 
drums = ["False", "False", "False", "False", "False", "False", "False", "False"]
currentDrum = 0
global cmb
global ckb
 
window = Tk()
 
chk_state = BooleanVar()  
chk_state.set(False)
 
def cbSelected(event):
    currentDrum = int(cmb.current())
    if drums[currentDrum] == "False":
        chk_state.set(False)
    else:
        chk_state.set(True)
    
 
def cbCheck():
    print(currentDrum)
    if chk_state.get():
        drums[currentDrum] = "True"
    else:
        drums[currentDrum] = "False"
    
window.title("Title")
window.resizable(False,False)
window.geometry("400x176")
 
gp = LabelFrame(window, text="Sort", width=401, height=56)
gp.place(x=0,y=0)
 
cmb = Combobox(gp, width=54, height=22)
cmb.bind("<<ComboboxSelected>>", cbSelected)
cmb.place(x=5,y=5)
cmb['values'] = ('Sort "kick" samples', 'Sort "clap" samples', 'Sort "snare" samples', 'Sort "hi-hat" samples', 'Sort "hat" samples', 'Sort "ride" samples',  'Sort "crash" samples', 'Sort "tom" samples')
cmb.set('Sort "kick" samples')
 
ckb = Checkbutton(gp, width=1,var=chk_state, takefocus = 0, command=cbCheck)
ckb.place(x=366,y=5)
 
gp2 = LabelFrame(window, text="Samples folder", width=401, height=56)
gp2.place(x=0,y=55)
 
txt = Entry(gp2, width=59)
txt.place(x=5,y=5)
 
bt = Button(gp2, text="...", width=3)
bt.place(x=365, y=2)
 
bt2 = Button(window, text="Start sort", width=20, height=1)
bt2.place(x=125, y=120)
 
statusbar = Label(window, text="Ready", bd=1, relief=SUNKEN, anchor=W)
statusbar.pack(side=BOTTOM, fill=X)
 
menu = Menu(window)  
file_item = Menu(menu,tearoff=0)  
file_item.add_command(label='Exit') 
menu.add_cascade(label='File', menu=file_item)
 
help_item = Menu(menu,tearoff=0)
help_item.add_command(label='About')
menu.add_cascade(label='Help', menu=help_item)
window.config(menu=menu) 
 
window.mainloop()
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2020, 18:33
Ответы с готовыми решениями:

Что не так с переменной
Извините за такой может простой вопросик, но вот кусок кода for(int n=0; n&lt;2; ++n){ ...

Что не так с переменной FK
Добрый день! 1. Народ подскажите что не так с переменной FK (файл во вложении). 2. Как сделать в...

Что пошло не так с моей переменной?
Парсил сайт со списком городов для игры в города. Получил список(строку) городов от А до Я (Ю) и...

Что не так с переменной взятой из файла?
Прошу помощи в разрешении вопроса, задание благодарен. Я написал парсер и мне надо заключить...

3
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
07.07.2020, 12:27 2
Whitehap, добрый совет - бросай ткинтер и бери нормальную книгу по питону, например Марка Лутца, методом тыка ты программировать не научишься.

Твой currentDrum из строки 5 это совсем не currentDrum из строки 15. В методе создается локальная переменная. Но это надо почитать теории, в том числе там расскажут что бессмысленно объявлять переменные глобал в глобальном скоупе (они и так глобальные) - это я про строки 6 и 7
1
1538 / 719 / 313
Регистрация: 02.05.2020
Сообщений: 1,604
07.07.2020, 13:07 3
Лучший ответ Сообщение было отмечено Whitehap как решение

Решение

добавить между строкой 14 и 15:
Python
1
global currentDrum
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
09.07.2020, 10:42 4
А лучше все обернуть в класс, тогда проблем с глобальными переменными не будет.
0
09.07.2020, 10:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2020, 10:42
Помогаю со студенческими работами здесь

ошибка в объявлении переменной, что может быть не так?
Доброго времени суток. У меня есть таблица id | name | description | parent_id | type Возник...

Как сделать так, что бы текст из поля INPUT присваивался переменной
Каксделать так, что-бы текст из поля INPUT присваивался переменной, к примеру а, это &quot;каркас&quot;...

Как в edit ввести функцию одной переменной так что бы её можно было менять без повторной компиляции
Как в edit ввести функцию одной переменной (с клавиатуры) что бы её можно было менять без повторной...

Можно ли сделать так, чтобы названием переменной стало значение другой переменной?
По аналогии с phpшным $$var; Если можно, то как?

Что не так с кодом? ( пытаюсь понять, что не так? )
Есть исходный код. Hook, работает хорошо, но есть минус огромный - перестаёт писать в лог, при...

Что не так с компилятором или почему программа рушится просто так?
Не обращайте внимание на г*внокод, в котором смешаны и Си и Си ++, здесь это не играет никакой...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru