Как создать поле со списком tkinter, которое может переключать данный тип виджета на другой тип виджета в определенном мPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как создать поле со списком tkinter, которое может переключать данный тип виджета на другой тип виджета в определенном м

Сообщение Anonymous »

В частности, я хотел сделать два поля со списком и кнопку. наряду с 8 другими виджетами для переключения, в 8 «местах» виджетов (конкретных областях, куда я помещаю виджеты)

первая комбинация переключает место, а вторая переключает виджет. кнопка выполняет это
(прокрутка, поле ввода, поле со списком, кнопка радион, кнопка проверки, масштаб, индикатор выполнения и список)
предпосылкой для этого проекта была :
"Создайте 2 поля со списком, которые переключают один виджет на другой виджет.
Управляйте 8 виджетами, пусть первое поле со списком переключает виджет, которым манипулируют, а второе поле со списком переключает этот виджет между другие виджеты."
Проблема, с которой я столкнулся, заключается в том, что не существует простых способов сделать это в Python (я специально использую tkinter/ttk)
когда я пытался использовать виджеты в функциях. они не отображаются на экране. (я все еще новичок в tkinter, это может быть очевидным решением), и никаких ошибок не появляется. Кажется, что графический интерфейс работает нормально. но когда кнопка вызывает функцию select(), она сразу переходит к оператору else. что, вероятно, является признаком того, что вводимые данные неверны

Код: Выделить всё

from tkinter import *

from tkinter import *
from tkinter import ttk
from time import *

# Global Variables
a = "Spinbox"
b = "Entrybox"
c = "Checkbox"
d = "RadioButton"
e = "Combobox"
f = "Listbox"
g = "Scale"
h = "Progressbar"
# GUI
root = Tk()
frame = ttk.Frame(root, style='color.TFrame')
s = ttk.Style()
s.configure('color.TFrame', background='black', borderwidth=5,
relief='sunken')
root.title("Widget Manipulator")
frame.grid(column=0,
row=0)

root.columnconfigure(0,
weight=1)
root.rowconfigure(0,
weight=1)

# Functions

def choose():
place.get()
if place == 1:
place1()
elif place == 2:
place2()
elif place == 3:
place3()
elif place == 4:
place4()
elif place == 5:
place5()
elif place == 6:
place6()
elif place == 7:
place7()
elif place == 8:
place8()
else:
placetext.set("Please choose an Option for the place")

def place1():
widget.get()
if widget == a:
ttk.Spinbox().grid(column=1, row=1)
elif widget == b:
ttk.Entry().grid(column=1, row=1)
elif widget == c:
ttk.Checkbutton().grid(column=1, row=1)
elif widget == d:
ttk.Radiobutton().grid(column=1, row=1)
elif widget == e:
ttk.Combobox().grid(column=1, row=1)
elif widget == f:
Listbox().grid(column=1, row=1)
elif widget == g:
ttk.Scale().grid(column=1, row=1)
elif widget == h:
ttk.Progressbar().grid(column=1, row=1)
else:
widgettext.set("please enter widget")

def place2():
widget.get()
if widget == a:
ttk.Spinbox().grid(column=1, row=2)
elif widget == b:
ttk.Entry().grid(column=1, row=2)
elif widget == c:
ttk.Checkbutton().grid(column=1, row=2)
elif widget == d:
ttk.Radiobutton().grid(column=1, row=2)
elif widget == e:
ttk.Combobox().grid(column=1, row=2)
elif widget == f:
Listbox().grid(column=1, row=2)
elif widget == g:
ttk.Scale().grid(column=1, row=2)
elif widget == h:
ttk.Progressbar().grid(column=1, row=2)
else:
widgettext.set("please enter widget")

def place3():
widget.get()
if widget == a:
ttk.Spinbox().grid(column=1, row=3)
elif widget == b:
ttk.Entry().grid(column=1, row=3)
elif widget == c:
ttk.Checkbutton().grid(column=1, row=3)
elif widget == d:
ttk.Radiobutton().grid(column=1, row=3)
elif widget == e:
ttk.Combobox().grid(column=1, row=3)
elif widget == f:
Listbox().grid(column=1, row=3)
elif widget == g:
ttk.Scale().grid(column=1, row=3)
elif widget == h:
ttk.Progressbar().grid(column=1, row=3)
else:
widgettext.set("please enter widget")

def place4():
widget.get()
if widget == a:
ttk.Spinbox().grid(column=1, row=4)
elif widget == b:
ttk.Entry().grid(column=1, row=4)
elif widget == c:
ttk.Checkbutton().grid(column=1, row=4)
elif widget == d:
ttk.Radiobutton().grid(column=1, row=4)
elif widget == e:
ttk.Combobox().grid(column=1, row=4)
elif widget == f:
Listbox().grid(column=1, row=4)
elif widget == g:
ttk.Scale().grid(column=1, row=4)
elif widget == h:
ttk.Progressbar().grid(column=1, row=4)
else:
widgettext.set("please enter widget")

def place5():
widget.get()
if widget == a:
ttk.Spinbox().grid(column=1, row=5)
elif widget == b:
ttk.Entry().grid(column=1, row=5)
elif widget == c:
ttk.Checkbutton().grid(column=1, row=5)
elif widget == d:
ttk.Radiobutton().grid(column=1, row=5)
elif widget == e:
ttk.Combobox().grid(column=1, row=5)
elif widget == f:
Listbox().grid(column=1, row=5)
elif widget == g:
ttk.Scale().grid(column=1,  row=5)
elif widget == h:
ttk.Progressbar().grid(column=1, row=5)
else:
widgettext.set("please enter widget")

def place6():
widget.get()
if widget == a:
ttk.Spinbox().grid(column=1, row=6)
elif widget == b:
ttk.Entry().grid(column=1, row=6)
elif widget == c:
ttk.Checkbutton().grid(column=1, row=6)
elif widget == d:
ttk.Radiobutton().grid(column=1, row=6)
elif widget == e:
ttk.Combobox().grid(column=1, row=6)
elif widget == f:
Listbox().grid(column=1, row=6)
elif widget == g:
ttk.Scale().grid(column=1, row=6)
elif widget == h:
ttk.Progressbar().grid(column=1, row=6)
else:
widgettext.set("please enter widget")

def place7():
widget.get()
if widget == a:
ttk.Spinbox().grid(column=1, row=7)
root.update()
elif widget == b:
ttk.Entry().grid(column=1, row=7)
elif widget == c:
ttk.Checkbutton().grid(column=1, row=7)
elif widget == d:
ttk.Radiobutton().grid(column=1, row=7)
elif widget == e:
ttk.Combobox().grid(column=1, row=7)
elif widget == f:
Listbox().grid(column=1, row=7)
elif widget == g:
ttk.Scale().grid(column=1, row=7)
elif widget == h:
ttk.Progressbar().grid(column=1, row=7)
else:
widgettext.set("please enter widget")

def place8():
widget.get()
if widget == a:
ttk.Spinbox().grid(column=1, row=8)
elif widget == b:
ttk.Entry().grid(column=1, row=8)
elif widget == c:
ttk.Checkbutton().grid(column=1, row=8)
elif widget == d:
ttk.Radiobutton().grid(column=1, row=8)
elif widget == e:
ttk.Combobox().grid(column=1, row=8)
elif widget == f:
Listbox().grid(column=1, row=8)
elif widget == g:
ttk.Scale().grid(column=1, row=8)
elif widget == h:
ttk.Progressbar().grid(column=1, row=8)
else:
widgettext.set("please enter widget")

# Widgets
place = IntVar()
widget = StringVar()
placetext = StringVar()
widgettext = StringVar()
Label(frame, textvariable=placetext).grid(column=2,
row=1)
Label(frame, textvariable=widgettext).grid(column=0,
row=1)
Button(frame, text="Change",
command=choose).grid(column=1,
row=0)
ttk.Combobox(frame, textvariable=widget,
values=(a, b, c, d, e, f, g, h)).grid(column=0,
row=0)
ttk.Combobox(frame, textvariable=place,
values=(1, 2, 3, 4, 5, 6, 7, 8)).grid(column=2,
row=0)

root.mainloop()
Это код, который я написал для него (он еще не закончен).
Я думаю, что проблема с текстовыми переменными. Кажется, они работают не так, как я предполагал (т. е. я вызывал их с помощью Place.get(), widget.get() и т. д., и они извлекают данные, и они проходят через операторы if, пока не найдут любой виджет и разместить его нужно (тогда предполагается выполнить этот eidget, но виджеты почему-то не любят находиться в функциях?)
я просто не понимаю, почему это не так не работает, или, скорее, я не понимаю, что не работает
возможно, мне нужно использовать root.update(), чтобы заставить виджеты работать, но это не имеет значения, если я смогу. Чтобы получить текстовые переменные для вывода правильных вещей, о, и вы можете игнорировать функции Place за пределами Place1(), они идентичны за пределами своих методов Grid().

Подробнее здесь: https://stackoverflow.com/questions/790 ... -to-anothe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»