Я написал простую программу, используя python модули matplotlib.pyplot, numpy, sys и tkinter. Вот программа:
import matplotlib.pyplot as plt
import numpy as np
from tkinter import *
from tkinter.ttk import Combobox
import sys
def graf_funkcije(funkcija, range = (-15,15), ime = "Funkcija", barva = "red"):
xos = []
yos = []
f = lambda x : eval(funkcija)
for x in np.arange(range[0],max(range),0.01):
xos.append(x)
yos.append(f(x))
print(xos,yos)
plt.plot(xos ,yos ,color = barva, label = ime)
plt.legend()
razd = np.arange(min(range) ,max(range)+1, 1)
razd2 = np.arange(-int(len(razd)/2), int(len(razd)/2+1), 1)
plt.axis([min(range), max(range) , -int(len(razd)/2), int(len(razd)/2)])
plt.plot((razd),len(razd)*[0], linewidth = 0.5, color = "black", linestyle = "dashed")
plt.plot(len(razd)*[0],razd2, linewidth=0.5, color="black", linestyle = "dashed")
plt.show()
def izris():
funkcija = vnesi_funkcijo.get()
ime = vnesi_ime.get()
barva = izberi_barvo.get()
slovar_barv = {"modra":"blue",
"rdeča":"red",
"zelena":"green",
"bela":"white",
"svetlo modra": "#e6e8fa",
"črna": "black",
"rumena": "yellow",
"siva": "grey",
"oranžna": "orange",
"vijolična": "purple"}
barva = slovar_barv[barva]
window.destroy()
graf_funkcije(funkcija, (-15, 15), barva=barva, ime=ime)
def zaprim():
window.destroy()
sys.exit()
def pomoc():
window.destroy()
okno_pomoci = Tk()
okno_pomoci.title("GRAPHICUS - POMOČ")
okno_pomoci.geometry("300x600+10+10")
linearna_naslov = Label(okno_pomoci, text="LINEARNA FUNKCIJA", font="Helvetica 12 bold", fg="red")
linearna_primer1 = Label(okno_pomoci, text = "-3*x + 8", font="Helvetica 11")
linearna_primer2 = Label(okno_pomoci, text = "(3/4)*x - 12",font="Helvetica 11")
linearna_naslov.grid(row = 0, sticky = W, rowspan = 2)
linearna_primer1.grid(row=2, sticky=W, rowspan=1)
linearna_primer2.grid(row=3, sticky=W, rowspan=1)
kvadratna_naslov = Label(okno_pomoci, text="KVADRATNA FUNKCIJA", font="Helvetica 12 bold", fg = "red")
kvadratna_primer1 = Label(okno_pomoci, text="x**2", font="Helvetica 11")
kvadratna_primer2 = Label(okno_pomoci, text="-1/2*x**2+12", font="Helvetica 11")
kvadratna_naslov.grid(row=5, sticky=W, rowspan=2)
kvadratna_primer1.grid(row=7, sticky=W, rowspan=1)
kvadratna_primer2.grid(row=8, sticky=W, rowspan=1)
polinom_naslov = Label(okno_pomoci, text="POLINOMSKA FUNKCIJA", font="Helvetica 12 bold", fg="red")
polinom_naslov.grid(row=9, sticky=W, rowspan=2)
racionalna_funkcija_naslov = Label(okno_pomoci, text="RACIONALNA FUNKCIJA", font="Helvetica 12 bold", fg="red")
racionalna_funkcija_naslov.grid(row=11, sticky=W, rowspan=2)
absolutna_vrednost_naslov = Label(okno_pomoci, text="FUNKCIJA Z ABSOLUTNO VREDNOSTJO", font="Helvetica 12 bold", fg="red")
absolutna_vrednost_naslov.grid(row=13, sticky=W, rowspan=2)
kotne_funkcije_naslov = Label(okno_pomoci, text="KOTNE FUNKCIJE", font="Helvetica 12 bold", fg="red")
kotne_funkcije_naslov.grid(row=15, sticky=W, rowspan=2)
okno_pomoci.mainloop()
while True:
window = Tk()
window.title('GRAPHICUS')
window.geometry("400x300+10+10")
btn = Button(window, text="IZRIŠI GRAF", bg="#e6e8fa",fg = "black", command = izris)
btn.place(relx = 0.2, rely = 0.8, anchor = CENTER)
zapri = Button(window, text="ZAPRI", bg="#e6e8fa",fg = "black", command = zaprim)
zapri.place(relx =0.85, rely = 0.8, anchor = CENTER)
napis_barva = Label(window, text="Barva grafa", fg='black', font=("Helvetica", 10))
napis_barva.place(anchor = CENTER, relx = 0.58, rely = 0.53)
gumb_pomoc = Button(window, bg = "#e6e8fa", text = "POMOČ", command = pomoc)
gumb_pomoc.place(anchor = CENTER, rely = 0.8, relx = 0.55)
napis_funkcija = Label(window, text='VNESI FUNKCIJO f(x):', font =("Helvetica",12))
napis_funkcija.place(anchor = CENTER, rely = 0.1, relx = 0.5)
vnesi_funkcijo = Entry(window, bg = "#e6e8fa")
vnesi_funkcijo.place(anchor = CENTER, relx = 0.5, rely = 0.2)
ime_funkcija = Label(window, text='IME FUNKCIJE:', font=("Helvetica", 12))
ime_funkcija.place(anchor = CENTER, rely = 0.3, relx = 0.5)
vnesi_ime = Entry(window, bg="#e6e8fa")
vnesi_ime.place(anchor=CENTER, relx=0.5, rely=0.4)
var = StringVar()
var.set("modra")
data=("modra","rdeča","zelena","bela","svetlo modra","črna","rumena","siva", "oranžna", "vijolična")
izberi_barvo=Combobox(window, values=data)
izberi_barvo.place(anchor = CENTER, relx = 0.7, rely = 0.6)
window.mainloop()
Я использовал метод cx_Freeze, чтобы преобразовать его в exe-форму и запустить на других компьютерах без python. Мой установочный файл был следующим (идентификаторы были немного изменены после публикации здесь, но с ними все в порядке):
from cx_Freeze import setup, Executable
base = None
executables = [Executable("graphicus.py", base=base)]
packages = ["matplotlib.pyplot", "sys", "numpy", "tkinter"]
options = {
'build_exe': {
' packages':packages,
},
}
setup(
name = "graphicus",
options = options,
version = "0.1",
description = 'Gamma testing',
executables = executables
)
Мне удалось создать папку с exe и всеми сгенерированными файлами, но когда я запустил exe, он только мигает, поэтому я запустил его в windows Powershell и получил следующее сообщение об ошибке:
Можете ли вы помочь мне? Что вы предлагаете?