Форум сайта python.su
Я пытаюсь сгенерировать exe файл с помощью pyinstaller , но при запуске выходит ошибка :
in exec_module exec(bytecode,module.__dict__) File "rtree\core.py",line 126, in <module> OSError: could not find or load spatialindex_c-64.dll [16436] Failed to execute script main
Прикреплённый файлы:
Безымянный1.png (41,4 KБ)
Офлайн
я пытаюсь написать графический калькулятор для решения квадратных уравнений,
распологаю кнопки ,текстовые метки,и поля ввода с помощью place(relx,rely)
from tkinter import * from math import sqrt def solver(a, b, c): D = b * b - 4 * a * c if D > 0: x1 = (-b + sqrt(D)) / (2 * a) x2 = (-b - sqrt(D)) / (2 * a) text = "Дескриминант: %s \n X1 равен: %s \n X2 равен: %s \n" % (D, x1, x2) elif D == 0: x1 = (-b) / (2 * a) text = "Дескриминант: %s \n X равен: %s \n" % (D, x1) else: text = "Дескриминант : %s \n Данное уравнение не имеет корней" % D return text def inserter(value): output.delete("0.0", "end") output.insert("0.0", value) def handler(): try: # make sure that we entered correct values a_val = float(a.get()) b_val = float(b.get()) c_val = float(c.get()) inserter(solver(a_val, b_val, c_val)) except ValueError: inserter("Вы не ввели 3 переменных") root = Tk() root.title('Решение квадратных уравнений') root.minsize(1000, 1000) frame = Frame(root) frame.place() a = Entry(frame) a.place(relx=0.005, rely=0.005,relwidth=0.50) a_lab = Label(frame, text="a+").place(relx=0.055, rely=0.005) b = Entry(frame) b.place(relx=0.055, rely=0.005,relwidth=0.050) b_lab = Label(frame, text="b+").place(relx=0.105, rely=0.005) c = Entry(frame) c.place(relx=0.105, rely=0.005,relwidth=0.100) c_lab = Label(frame, text="c+").place(relx=0.155, rely=0.005) but = Button(root, text="решить", command=handler,relx=0.900,rely=0.100) output = Text(frame, bg="lightblue", font="Arial 12",height=900,width=900) output.place(relx=0.005,rely=0.200) root.mainloop()
Отредактировано FishHook (Авг. 17, 2020 14:15:16)
Прикреплённый файлы:
расположение кнопок.py (1,7 KБ)
Офлайн
but = Button(root, text="решить", command=handler,relx=0.900,rely=0.100)
Офлайн
Я сделал поправку ,но когда я нажал выполнить на холсте только кнопка решить и ни текстовых меток ,ни ни рамок ввода нет .Почему так?Вот код программы:
from tkinter import * from math import sqrt def solver(a, b, c): D = b * b - 4 * a * c if D > 0: x1 = (-b + sqrt(D)) / (2 * a) x2 = (-b - sqrt(D)) / (2 * a) text = "Дескриминант: %s \n X1 равен: %s \n X2 равен: %s \n" % (D, x1, x2) elif D == 0: x1 = (-b) / (2 * a) text = "Дескриминант: %s \n X равен: %s \n" % (D, x1) else: text = "Дескриминант : %s \n Данное уравнение не имеет корней" % D return text def inserter(value): output.delete("0.0", "end") output.insert("0.0", value) def handler(): try: # make sure that we entered correct values a_val = float(a.get()) b_val = float(b.get()) c_val = float(c.get()) inserter(solver(a_val, b_val, c_val)) except ValueError: inserter("Вы не ввели 3 переменных") root = Tk() root.title('Решение квадратных уравнений') root.minsize(1000, 1000) frame = Frame(root) frame.place() a = Entry(frame) a.place(relx=0.005, rely=0.005,relwidth=0.50) a_lab = Label(frame, text="a+").place(relx=0.055, rely=0.005) b = Entry(frame) b.place(relx=0.055, rely=0.005,relwidth=0.050) b_lab = Label(frame, text="b+").place(relx=0.105, rely=0.005) c = Entry(frame) c.place(relx=0.105, rely=0.005,relwidth=0.100) c_lab = Label(frame, text="c+").place(relx=0.155, rely=0.005) but = Button(root, text="решить", command=handler).place(relx=0.900,rely=0.100) output = Text(frame, bg="lightblue", font="Arial 12",height=900,width=900) output.place(relx=0.005,rely=0.200) root.mainloop()
Отредактировано FishHook (Авг. 18, 2020 17:05:09)
Прикреплённый файлы:
расположение кнопок.py (1,7 KБ)
Офлайн
Помогите
Офлайн
simonovaleksandrЯ не вижу в вашем коде ни одного вызова pack(), но что-то мне подсказывает, что так оно работать не будет. Покажите, каким мануалом вы пользовались для написания вашей программы
Помогите
Офлайн
Будет нормально работать и с place(), но это примитивный и самый трудоёмкий упаковщик, он ждёт, что программист посчитает все размеры и положения виджетов, а ТС это не делает, все виджеты свалены в кучу. У кнопки родитель — главное окно, поэтому она видна, а у остальных виджетов родитель frame без размеров, поэтому они “сколапсировали в ноль”, чтобы они стали видны, фрейму надо задать размеры, например, так:
frame = Frame(root) frame.place(height=800,width=800)
Офлайн
Я пользовался place () относительным расположением рамок меток и программ
Офлайн
Спасибо rami
Офлайн
frame = Frame(root)
frame.place(relheight=0.800,relwidth=0.800)
А вот так задавать размеры можно?
Офлайн