не может импортировать значения из Entry tkinter в другой .py - PullRequest
0 голосов
/ 03 февраля 2019

мой реальный код делает сложные вычисления с выходами, чтобы преуспеть.Но несколько дней назад меня спросили о графическом интерфейсе с входными параметрами, я запрограммировал базовый графический интерфейс в tkinter для экспорта двух значений в мой основной .PY, но я не могу импортировать значения: c какое-либо решение или правильная реализация?

Этот код является базовым примером (с решением я начну адаптировать его к моему реальному коду)

gui.py

##!/usr/bin/python
import tkinter as tk
import os
from menu import *

def getvalues():
    value1 = float(X.get())
    value2 = float(Y.get())
    return value1, value2

def anotherPY():
    menu.sum1()


root = tk.Tk()
root.geometry("200x200")
root.title("Project")

X = tk.Entry(root)
X.pack()
X.place(relx=.5, rely=.4, anchor="c")

Y = tk.Entry(root)
Y.pack()
Y.place(relx=.5, rely=.6, anchor="c")

b1 = tk.Button(root, text = "Calculate", width = 15, command = anotherPY)
b1.pack()
b1.place(relx=.5, rely=.9, anchor="c")


root.mainloop()

menu.py

from gui import value1, value2

def sum1():
    value3 = value1 + value2
    print(value3)

Вывод ошибки:

C:\Users\Jota\Desktop\Modulos>gui.py
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Jota\Miniconda3\lib\tkinter\__init__.py", line 1705, in 
__call___
    return self.func(*args)
  File "C:\Users\Jota\Desktop\Modulos\gui.py", line 13, in anotherPY
    menu.sum1()
NameError: name 'menu' is not defined
Traceback (most recent call last):
  File "C:\Users\Jota\Desktop\Modulos\gui.py", line 5, in <module>
    from menu import *
  File "C:\Users\Jota\Desktop\Modulos\menu.py", line 1, in <module>
    from gui import value1, value2
ImportError: cannot import name 'value1' from 'gui' 
(C:\Users\Jota\Desktop\Modul
os\gui.py)

спасибо за прочитанное, ребята!

1 Ответ

0 голосов
/ 13 марта 2019

Почему бы вам не передать значения в качестве аргументов

#in gui.py
def anotherPY():
    val1, val2 = getvalues()
    menu.sum1(val1, val2)

и в menu.py:

def sum1(value1, value2):
    value3 = value1 + value2
    print(value3)

"из графического интерфейса импорта value1, value2" только импортирует функции иклассы не переменные

...