Найти - Пользователи
Полная версия: выпадающие списки
Начало » GUI » выпадающие списки
1 2
shalx
как связать эти два списка?
заранее спасибо

from tkinter import *
root = Tk()
root = “white”
root.geometry('400x400')
root.title('кепка')
root.overrideredirect(False)



from tkinter import Tk, StringVar, ttk



def combo(parent):
value = StringVar()
box = ttk.Combobox(parent, textvariable=value, state='readonly')
box = ('A', ‘B’, ‘C’)
box.current(0)
box.grid(column=0, row=0)
box.place(x='10',y='15')

combo(root)

from tkinter import Tk, StringVar, ttk



def combo(parent):
value = StringVar()
box = ttk.Combobox(parent, textvariable=value, state='readonly')
box = ('D', ‘E’, ‘F’)
box.current(0)
box.grid(column=0, row=0)
box.place(x='180',y='15')

combo(root)

root.mainloop()
4kpt_II
Я Вам в другом разделе уже написал. Или Вы считаете, что здесь сидят совсем другие программисты.
Объясните. Что значить связать?
Давайте так:
1. Было так.
2. Стало так.

Или.

“У меня вот так. Если я на этом нажимаю это, то получается такое…”.

Нужно более подробно. Сложно понять, а писать десяток возможных вариантов нет ни времени ни желания. Хочу Вам помочь, но не знаю как и каким образом.

P.S. И оберните код в теги. Вам об этом уже написали более опытные товарищи выше. Имейте уважение к тем, кто читает Вашу тему…
shalx
извините плз . я совсем чайник и на форуме и в паитоне . если сможите ответте пожалуста .
есть форма в ткинтер , на форме 2 бокса со списками , как сделать чтоб когда мы вибираеб в первом боксе из списка “A” во втором сам показивалсия буква “D”, и на оборот. не знаю объяснил ли


from tkinter import *
root = Tk()
root = “white”
root.geometry('400x400')
root.title('кепка')
root.overrideredirect(False)



from tkinter import Tk, StringVar, ttk



def combo(parent):
value = StringVar()
box = ttk.Combobox(parent, textvariable=value, state='readonly')
box = ('A', ‘B’, ‘C’)
box.place(x='10',y='15')

combo(root)

from tkinter import Tk, StringVar, ttk



def combo1(parent):
value = StringVar()
box = ttk.Combobox(parent, textvariable=value, state='readonly')
box = ('D', ‘E’, ‘F’)
box.place(x='180',y='15')

combo1(root)

root.mainloop()
4kpt_II
Теперь понятней.
Держите код.

import Tkinter
import ttk
#
#
def choice(event):
    wdg = event.widget  # С какого виджета пришло событие
    # Получаем виджет соответсвия и назначаем ему соответствующую строку
    accordance_wdg[wdg.winfo_id()].set(accordance_str[wdg.get()])
#
#
root = Tkinter.Tk()
root.geometry("400x400+100+100")
#
val_1 = ('A', 'B', 'C')
box_1 = ttk.Combobox(root, state='readonly', values=val_1)
box_1.place(relx=0.25, rely=0.5, anchor="center")
box_1.bind("<<ComboboxSelected>>", choice)
#
val_2 = ('D', 'E', 'F')
box_2 = ttk.Combobox(root, state='readonly', values=val_2)
box_2.place(relx=0.75, rely=0.5, anchor="center")
box_2.bind("<<ComboboxSelected>>", choice)
#
# Описываем соотвествие
accordance_str = {"A": "D", "B": "E", "C": "F", "D": "A", "E": "B", "F": "C"}
accordance_wdg = {box_1.winfo_id(): box_2, box_2.winfo_id(): box_1}
#
root.mainloop()

В 3.Х по-моему нужно писать не Tkinter, а tkinter и не просто import ttk, а from tkinter import ttk.

Еще одно. Так делать нельзя.

from tkinter import *

Делать нельзя никогда. Почему нельзя - ЧИТАЕМ ТУТ…

Будут вопросы - пишите.
shalx
огромное спасибо вам 4kpt_II , вы точно гуру .
чуть изменил код потому что у меня версия 333 и всо получилось .


import tkinter
from tkinter import Tk, StringVar, ttk
def choice(event):
    wdg = event.widget  # С какого виджета пришло событие
    # Получаем виджет соответсвия и назначаем ему соответствующую строку
    accordance_wdg[wdg.winfo_id()].set(accordance_str[wdg.get()])
root = tkinter.Tk()
4kpt_II
Да какой там гуру. Подождите.
Вторая строка неверна!!!

Нужно

from tkinter import ttk

Вы же используете явное указание на класс, поэтому так правильнее…
shalx
но ана работает , на wing тестировал , тока stringvar не нужен
4kpt_II
Вы повторно импортируете. Это не нужно. Это как написать.

import tkinter
from tkinter import ttk
import tkinter

К тому же Вы явно ссылаетесь на модуль в строке

root = Tkinter.Tk()

Поэтому в объявлении

from tkinter import ttk, Tk

Tk вообще дальше по коду не используется.

P.S. Если планируете дальше заниматься питоном, то вам надо что-то почитать. Вопросы слишком простые.

P.S.S. Первый вопрос был интересным… Дальше - нет.
shalx
хочу очень , посоветуйте пожалуйста русскую литературу и с чего надо начать
4kpt_II
Кидайте скайп в личку.
Накидаю литературы без проблем.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB