Задать вопрос
ElemAnybody
@ElemAnybody

Python, как исправить мою ошибку (tkinter переменные в matlab)?

Как мне сделать так, чтобы, когда я вводил значения в "txt" и "txt2", они сохранялись в переменные, чтоб я смог их использовать в "def next():" [в моем примере это поставить точку кодом "plt.plot(x,y, '--bo')"]
import matplotlib.pyplot as plt
from tkinter import*
import tkinter

def start():

    window = Tk()

    window.title("Ввод точек!")

    window.geometry('400x500')

    lbl = Label(window, text="1")
    lbl.grid(column=0, row=0)
    txt = Entry(window, width=10)
    lbl2 = Label(window, text="2")
    lbl2.grid(column=0, row=1)
    txt2 = Entry(window, width=10)
    txt2.grid(column=4, row=0)
    txt.grid(column=4, row=1)
    btn = Button(window, text="3", command = next)
    btn.config(height=20, width=45)
    btn.grid(column=0, row=5)
    lbl3 = Label(window, text="4")
    lbl3.grid(column=0, row=6)
    txt3 = Entry(window, width=45)
    txt3.grid(column=0, row=7)
    window.mainloop()
    global x
    global y
    x = txt.get()
    y = txt2.get()
def next():
    plt.subplot(111)
    plt.plot([0, 40, 40], [20, 20, 0],'--bo')
    plt.plot([0, 37, 37], [12, 12, 0])
    plt.axis([0, 100, 0, 60])
    plt.plot(x,y, '--bo')
    plt.title('Seed et al. (2003)')
    plt.show()
start()

Ошибку выдаёт следующую:
plt.plot(x,y, '--bo')
NameError: name 'x' is not defined

Если я попробую создать переменные в "next():" , то не будет видно элементов tk (будет выдавать ошибку: NameError: name 'txt' is not defined)
  • Вопрос задан
  • 232 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
ElemAnybody
@ElemAnybody Автор вопроса
import matplotlib.pyplot as plt
from tkinter import*
import tkinter
x = 0
y = 0

def next():
    global x
    global y


    plt.subplot(111)
    # 'ro'
    amin = 12
    bmax = 20
    cmin = 37
    dmax = 47
    p1 = 2
    p2 = 2
    plt.plot([0, 40, 40], [20, 20, 0],'--bo')
    plt.plot([0, 37, 37], [12, 12, 0])
    plt.axis([0, 100, 0, 60])
    plt.plot([int(txt.get())], [int(txt2.get())],'--bo')
    plt.title('Seed et al. (2003)')
    plt.show()

window = Tk()

window.title("Ввод точек!")

window.geometry('400x500')

lbl = Label(window, text="1")
lbl.grid(column=0, row=0)
txt = Entry(window, width=10)

lbl2 = Label(window, text="2")
lbl2.grid(column=0, row=1)
txt2 = Entry(window, width=10)

txt2.grid(column=4, row=0)
txt.grid(column=4, row=1)

btn = Button(window, text="3", command=next)
btn.config(height=20, width=45)
btn.grid(column=0, row=6)
lbl3 = Label(window, text="4")
lbl3.grid(column=0, row=7)
txt3 = Entry(window, width=45)
txt3.grid(column=0, row=8)
window.mainloop()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Определите x и y в глобальной области видимости.
Похоже, что global не создает переменных, он только говорит питону, что искать эти переменные надо в глобальной области видимости. Если там переменная не найдена, она создается по обычным правилам - в локальной области видимости.
https://docs.python.org/3/reference/simple_stmts.h...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы